如何返回JSon对象

17 浏览
0 Comments

如何返回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日
0
0 Comments

你只有一行需要序列化。尝试像这样做:

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

  • 编辑以与操作者原始的JSON输出匹配

** 编辑2:抱歉,我错过了他使用JSON.NET。使用JavaScriptSerializer以上代码将产生以下结果:

{"results":[{"id":1,"value":"ABC","info":"ABC"},{"id":2,"value":"XYZ","info":"XYZ"}]}

0
0 Comments

首先,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"
    }
  ]
}

0