将复杂的JSON对象转换为C#属性

时间:2018-02-09 14:14:35

标签: c# json

我正在努力构建一个复杂的JSON对象,这就是我想要的:

{"name": [ "failed","complete"], "data": ["failed":[1, 2, 3], "completed": [1, 2, 3]}

我想在C#类中将其转换为属性。必须与失败的属性和int列表建立连接。输出必须是:

失败:1,2,3 完成:1,2,3

像这样的JSON对象的正确语法是什么?我怎样才能在c#中声明这个对象的属性?

我在考虑字典,但也许有更好的方法?

亲切的问候

1 个答案:

答案 0 :(得分:2)

我认为应该是:

{"name": [ "failed","complete"], "data": {"failed":[1, 2, 3], "completed": [1, 2, 3]}}

然后你可以使用:

public class Data {
    public List<int> failed { get; set; }
    public List<int> completed { get; set; }
}

public class RootObject {
    public List<string> name { get; set; }
    public Data data { get; set; }
}

对于任何json到c#,我使用: json2csharp.com

修改 我认为,对你的案例更好的方法是使用字典和下面的类:

public class DataValues {
    public List<int> Data;
}

然后像:

一样使用它
Dictionary<string, DataValues> x = new Dictionary<string, DataValues>();

x.Add("failed", new DataValues() {
    Data = new List<int> { 1, 2, 3 }
});
x.Add("complete", new DataValues() {
    Data = new List<int> { 1, 2, 3 }
});

var resultinJson = new JavaScriptSerializer().Serialize(x);

然后,Json的结果是:

{
    "failed": {
        "Data": [1, 2, 3]
    },
    "complete": {
        "Data": [1, 2, 3]
    }
}

显然,您可以在status中添加更多stepapp.或其中的内容。