如何返回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具有idNumber而不是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"}]}