如何返回json对象?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (39)

我正在使用一个jQuery插件,它需要一个带有以下结构的JSON对象(我将从数据库中检索值):

{ 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);

但是这只会返回一行。你能帮我回复多个结果吗?我怎样才能得到上面指定格式的结果?

提问于
用户回答回答于

只有一行要序列化。尝试这样的事情:

List<results> resultRows = new List<results>

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输出

我错过了他使用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<Result>()
    {
        new Result { id = 1, value = "ABC", info = "ABC" },
        new Result { id = 2, value = "JKL", info = "JKL" }
    }
});

另外请注意,生成的JSON包含ids类型结果项Number而不是字符串。我怀疑这将是一个问题,但它是足够容易的类型更改idstring在C#。

我也会调整你的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"
    }
  ]
}

扫码关注云+社区