如何返回JSon对象
如何返回JSon对象
我正在使用一个需要以下结构的JSON对象的jQuery插件(我将从数据库中检索值):
{ results: [ { id: "1", value: "ABC", info: "ABC" }, { id: "2", value: "JKL", info: "JKL" }, { id: "3", value: "XYZ", info: "XYZ" } ] }
这是我的类:
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);
但是这只会返回一行。你能帮我返回多个结果吗?我该如何按照上面指定的格式获得结果?
admin 更改状态以发布 2023年5月23日
你只有一行需要序列化。尝试像这样做:
ListresultRows = 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});
- 编辑以与操作者原始的JSON输出匹配
** 编辑2:抱歉,我错过了他使用JSON.NET。使用JavaScriptSerializer
以上代码将产生以下结果:
{"results":[{"id":1,"value":"ABC","info":"ABC"},{"id":2,"value":"XYZ","info":"XYZ"}]}
首先,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 中的 result 辅助项使用了 Number
而非字符串类型的 id
。我不认为这会造成问题,但是非常容易在 C# 中更改类型为 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" } ] }