如何返回JSon对象
我正在使用一个需要具有以下结构的JSON对象的jQuery插件(我将从数据库中检索值):
{ results: [ { id: "1", value: "ABC", info: "ABC" }, { id: "2", value: "JKL", info: "JKL" }, { id: "3", value: "XYZ", info: "XYZ" } ] }
这是我的class级:
public class results { int _id; string _value; string _info; public int id { get { return _id; } set { _id = value; } } public string value { get { return _value; } set { _value = value; } } public string info { get { return _info; } set { _info = value; } } }
这是我序列化它的方式:
results result = new results(); result.id = 1; result.value = "ABC"; result.info = "ABC"; string json = JsonConvert.SerializeObject(result);
但这只会返回一行。 你可以帮我回复一个以上的结果吗? 如何以上面指定的格式获得结果?
首先, 没有JSON对象这样的东西 。 您在问题中得到的是一个JavaScript对象文字(请参阅此处以获得有关差异的精彩讨论)。 以下是如何将序列化到JSON的内容:
我会使用填充了results
类型的匿名类型:
string json = JsonConvert.SerializeObject(new { results = new List() { new Result { id = 1, value = "ABC", info = "ABC" }, new Result { id = 2, value = "JKL", info = "JKL" } } });
另请注意,生成的JSON具有id
为Number
而不是string的结果项。 我怀疑这将是一个问题,但在C#中将id
的类型更改为string
会很容易。
我还会调整results
类型并删除支持字段:
public class Result { public int id { get ;set; } public string value { get; set; } public string info { get; set; } }
此外,类通常是PascalCased
而不是camelCased
。
这是上面代码中生成的JSON:
{ "results": [ { "id": 1, "value": "ABC", "info": "ABC" }, { "id": 2, "value": "JKL", "info": "JKL" } ] }
您只有一行要序列化。 尝试这样的事情:
List resultRows = new List resultRows.Add(new results{id = 1, value="ABC", info="ABC"}); resultRows.Add(new results{id = 2, value="XYZ", info="XYZ"}); string json = JavaScriptSerializer.Serialize(new { results = resultRows});
- 编辑以匹配OP的原始json输出
**编辑2:抱歉,但我错过了他正在使用JSON.NET。 使用JavaScriptSerializer
,上面的代码产生了这个结果:
{"results":[{"id":1,"value":"ABC","info":"ABC"},{"id":2,"value":"XYZ","info":"XYZ"}]}