如何生成以整数为键的json字符串

本文关键字:json 字符串 何生成 整数 | 更新日期: 2023-09-27 18:24:05

我想在C#语言中生成这样的json字符串

{
  "error": "0",
  "message": "messages",
  "data": {
    "version": "sring",
    "1": [
      {
        "keyword": "",
        "title": ""
      },
      {
        "keyword": "",
        "title": ""
      }
    ],
    "2": [
      ...
    ],
    "3": [
      ...
    ]
  }
}

这里有一个问题,"1":[{},{}],如何生成这个部分?顺便说一句,我正在使用asp.net mvc项目,我想将这个json字符串返回到客户端web浏览器。

如何生成以整数为键的json字符串

此响应可以简单地使用数组作为值的Dictionary<string, object>生成。

public class KeywordTitle
{
    public string keyword { get; set; }
    public string title { get; set; }
}
public class Response
{
    public string error { get; set; }
    public string message { get; set; }
    public Dictionary<string, object> data { get; set; }
}
var dictionary = new Dictionary<string, object> {
    {"version", "sring"}
};
dictionary.Add("1", new []
{
    new KeywordTitle { keyword = "", title = "" },
    new KeywordTitle { keyword = "", title = "" },
    new KeywordTitle { keyword = "", title = "" }
});
JsonConvert.SerializeObject(new Response
{
    error = "0",
    message = "messages",
    data = dictionary
});

它生成:

{
    "error" : "0",
    "message" : "messages",
    "data" : {
        "version" : "sring",
        "1" : [{
                "keyword" : "",
                "title" : ""
            }, {
                "keyword" : "",
                "title" : ""
            }, {
                "keyword" : "",
                "title" : ""
            }
        ]
    }
}

如果它是您的API,那么最好提取version,以便使data中的所有对象和类型为int的键具有相同的类型。

NuGet获取Json.NET。然后,在您的MVC模型中,在Array属性上使用此data annotation

[JsonProperty(PropertyName="1")]
public string[] YourProperty { get; set }

将数据序列化为JSON时,将使用PropertyName值。

如果您使用Newtonsoft.Json-NuGet包,序列化Dictionary<int, List<MyClass>>将获得预期结果。

使用Json.net并将以下属性添加到要修改名称的属性中:

[JsonProperty(PropertyName = "1")]
public List<ObjectName> Objects { get; set; }

有关详细信息,请查看序列化属性。