JSON中Key的修改问题

leejelly 2015-12-07 05:10:47
预想实现:后台返回的json文件,转换成前台的下拉列表的项目,是用<ul>实现的。
比如 我有两个json文件,这是后台cs文件返回的。如下:
json1 =
[
{"A_CODE":"*","A_NAME":"下拉列表1"},
{"A_CODE":"2346","A_NAME":"下拉列表1的项1"},
{"A_CODE":"2347","A_NAME":"下拉列表1的项2"}
]
json2 =
[
{"B_CODE":"*","B_NAME":"下拉列表2"},
{"B_CODE":"2346","B_NAME":"下拉列表2的项1"},
{"B_CODE":"2347","B_NAME":"下拉列表2的项2"}
]
两个json一起用的函数:参数就是上边的json数据
实现 传入json数据,返回 ul 的值。
xxxxxx: function (json)
{
var str = "";
if (json != "")
{
var obj = eval("(" + json + ")");
for (var i = 0; i < obj.length; i++)
{
str += "<li id=\"" + o[i]["CODE"] + >" + o[i]["NAME"] + "</li>";
}
}
}
疑问点:怎么把json中的“A_CODE” 转换成xxxxxx函数需要的“CODE”?
...全文
1980 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2015-12-11
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using Newtonsoft.Json; //注意引用 Newtonsoft.Josn.dll

namespace ConsoleApplication12
{
class Program
{
static void Main(string[] args)
{
CommonCode a = new CodeA() { A_CODE = "A1_code", A_NAME = "A1_name" };
CommonCode b = new CodeB() { B_CODE = "A1_code", B_NAME = "B1_name" };

string[] arr = {
Newtonsoft.Json.JsonConvert.SerializeObject(a),
Newtonsoft.Json.JsonConvert.SerializeObject(b)
};
Console.WriteLine(arr[0]);
Console.WriteLine(arr[1]);
Console.WriteLine("End");
Console.ReadLine();
}
}


public class CodeB : CommonCode
{
[JsonIgnore] //在输出json时忽略
public string B_CODE
{
get
{
return this.Code;
}
set
{
this.Code = value;
}
}

[JsonIgnore]
public string B_NAME
{
get
{
return this.Name;
}
set
{
this.Name = value;
}
}
}


public class CodeA : CommonCode
{
[JsonIgnore]
public string A_CODE
{
get
{
return this.Code;
}
set
{
this.Code = value;
}
}
[JsonIgnore]
public string A_NAME
{
get
{
return this.Name;
}
set
{
this.Name = value;
}
}
}

public class CommonCode
{
public string Code { get; set; }
public string Name { get; set; }
}
}

吉普赛的歌 2015-12-11
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace ConsoleApplication12
{
class Program
{
static void Main(string[] args)
{
CommonCode a = new CodeA() { A_CODE = "A1_code", A_NAME = "A1_name" };
CommonCode b = new CodeB() { B_CODE = "A1_code", B_NAME = "B1_name" };

string[] arr = {
Newtonsoft.Json.JsonConvert.SerializeObject(a),
Newtonsoft.Json.JsonConvert.SerializeObject(b)
};
Console.WriteLine(arr[0]);
Console.WriteLine(arr[1]);
Console.WriteLine("End");
Console.ReadLine();
}
}

public class CodeB : CommonCode
{
public string B_CODE
{
get
{
return this.Code;
}
set
{
this.Code = value;
}
}

public string B_NAME
{
get
{
return this.Name;
}
set
{
this.Name = value;
}
}
}


public class CodeA : CommonCode
{
public string A_CODE
{
get
{
return this.Code;
}
set
{
this.Code = value;
}
}

public string A_NAME
{
get
{
return this.Name;
}
set
{
this.Name = value;
}
}
}

public class CommonCode
{
public string Code { get; set; }
public string Name { get; set; }
}
}

吉普赛的歌 2015-12-11
  • 打赏
  • 举报
回复
在C#中定义一个专门的类, 在返回时统一构建这个类的对象返回就好了。 public class CommonCode { public string Code { get;set; } public string Name { get;set; } }
Go 旅城通票 2015-12-10
  • 打赏
  • 举报
回复
引用 6 楼 leejelly 的回复:
[quote=引用 4 楼 showbo 的回复:] str += "<li id=\"" +( o[i]["A_CODE"] ||o[i]["B_CODE"] )+ >" + ( o[i]["A_NAME"] ||o[i]["B_NAME"] )+ "</li>";
先谢谢你的热心回答, 看代码应该是可以过的(没有试啊),但不是我想要的效果。 如果我有很多不一样的json数据,总不能都拼到这里吧?[/quote] 那你就统一你的键名称。。不一样引用方式肯定不一样了
leejelly 2015-12-10
  • 打赏
  • 举报
回复
引用 4 楼 showbo 的回复:
str += "<li id=\"" +( o[i]["A_CODE"] ||o[i]["B_CODE"] )+ >" + ( o[i]["A_NAME"] ||o[i]["B_NAME"] )+ "</li>";
先谢谢你的热心回答, 看代码应该是可以过的(没有试啊),但不是我想要的效果。 如果我有很多不一样的json数据,总不能都拼到这里吧?
leejelly 2015-12-10
  • 打赏
  • 举报
回复
引用 3 楼 kinger906 的回复:
for(var o in json1){
json1[o]["CODE"] = json1[o]["A_CODE"];
json1[o]["NAME"] = json1[o]["A_NAME"];
delete json1[o]["A_CODE"];
delete json1[o]["A_NAME"];
}
for(var o in json2){
json2[o]["CODE"] = json2[o]["B_CODE"];
json2[o]["NAME"] = json2[o]["B_NAME"];
delete json2[o]["B_CODE"];
delete json2[o]["B_NAME"];
}


这里的【o】是json里字符串的长度,从”[“开始,把json依次取一遍,不是你想象的数据条的个数。
kinger906 2015-12-09
  • 打赏
  • 举报
回复
for(var o in json1){
   json1[o]["CODE"] = json1[o]["A_CODE"];
   json1[o]["NAME"] = json1[o]["A_NAME"];
   delete json1[o]["A_CODE"];
   delete json1[o]["A_NAME"];
}
for(var o in json2){
   json2[o]["CODE"] = json2[o]["B_CODE"];
   json2[o]["NAME"] = json2[o]["B_NAME"];
   delete json2[o]["B_CODE"];
   delete json2[o]["B_NAME"];
}
Go 旅城通票 2015-12-09
  • 打赏
  • 举报
回复
str += "<li id=\"" +( o[i]["A_CODE"] ||o[i]["B_CODE"] )+ >" + ( o[i]["A_NAME"] ||o[i]["B_NAME"] )+ "</li>";
似梦飞花 2015-12-07
  • 打赏
  • 举报
回复
json1 [i]['code']=json1[i]['A_CODE'] 遍历添加新key
slwsss 2015-12-07
  • 打赏
  • 举报
回复
if (json != "") { for (var i = 0; i < obj.length; i++) { str += "<li id=\"" + (o[i]["A_CODE"]||o[i]["B_CODE"]) + >" + o[i]["NAME"] + "</li>"; } }

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧