如何为嵌套的Json数组赋值

时间:2017-03-31 13:58:44

标签: c# json

我正在使用C#。我想在下面的结构中使用Json数组

"bed_configurations": [
           [{
             "type": "standard",
             "code": 3,
             "count": 1
             },
             {
              "type": "custom",
              "name": "Loft",
              "count": 1
             }]
        ]

请任何人帮助我..

2 个答案:

答案 0 :(得分:1)

您必须为所需的class创建json。此外,您必须使用using Newtonsoft.Json;作为json转换器。我已经创建了一个示例,请检查一下。

CODE:

public class Header
{
    public List<List<Item>> bed_configurations { get; set; }
}

public class Item
{
    public string type { get; set; }
    public int code { get; set; }
    public string name { get; set; }
    public int count { get; set; }
}

private static void getJSON()
{
    List<Item> items = new List<Item>();
    items.Add(new Item() { type = "standard", code = 3, count = 1 });
    items.Add(new Item() { type = "custom", name = "Loft", count = 1 });

    Header ob = new Header();
    ob.bed_configurations = new List<List<Item>>() { items };

    string output = JsonConvert.SerializeObject(ob);
}

输出:

enter image description here

答案 1 :(得分:1)

您最好的方法是创建一个类似于此结构的类,并使用Newtonsoft.JSON将对象序列化/反序列化为json字符串。

public class BedConfiguration
{
    [JsonProperty("type")]
    public string Type {get; set;}
    [JsonProperty("code")]
    public int Code {get; set;}
    [JsonProperty("count")]
    public int Count {get; set;}
}

整个json字符串只是一个数组,在一个数组中,上面的类(奇怪)。因此,您可以填充这些BedConfiguration的列表,然后将它们序列化:

var configs = new List<List<BedConfiguration>>();
//Populate the list programmatically.
var json = JsonConvert.SerializeObject(configs);

同样,您可以将json字符串转回列表:

var configs = JsonConvert.DeserializeObject<List<List<BedConfiguration>>>(json);