数组C#的JSON属性

时间:2018-09-11 16:05:38

标签: c# json json.net

"inputs": {
    "input1": {
        "value": "abc"
    },
    "input2": {
        "value": "cde"
    },
    "input3": {
        "value": "efg"
    },
    "input4": {
        "value": "ghi"
    },      
}

此处“输入”中的属性数量可能会有所不同。如何将其反序列化为类:

class Inputs
{
    public Input[] Values{get; set;}
}

class Input
{
    public string input {get; set;}
}

一种选择是将json“ inputs”更改为数组,但我现在没有选择

2 个答案:

答案 0 :(得分:3)

您的数据与以下数据结构匹配。

public class Data
{
    public Dictionary<string, Dictionary<string, string>> Inputs { get; set; }
}

由于您没有提到使用任何库来对JSON对象进行反序列化,所以我建议使用.Net框架的著名NewtonSoft库。

在这种情况下,您只需使用以下代码片段反序列化数据即可。

var data = JsonConvert.DeserializeObject<Data>(YOUR_JSON_STRING);

答案 1 :(得分:0)

如何安装

安装软件包Newtonsoft.Json:

在Visual Studio中,“工具”菜单->“管理Nuget软件包管理器解决方案”,然后键入“ JSON.NET”以进行在线搜索。这是数字:

enter image description here

然后使用您希望将其作为JSON响应获取的输入参数创建类。

public class Inputs
{
    public string input1 { get; set; }
    public string input2 { get; set; }
    public string input3 { get; set; }
    public string input4 { get; set; }
}

现在,我们将使用JsonConvert类的DeserializeObject()方法将其转换为.NET对象。这是代码:

private void JSONDeserilaize(string json)
{
    var obj = JsonConvert.DeserializeObject<Inputs>(json);
}

现在您拥有一个类型为“输入已成功反序列化”的对象