,c#"/>

首页 > 解决方案 > 如何将json反序列化为字典

问题描述

我有一个看起来与此类似的课程

public class Demo
{
    [JsonProperty("variables")]
    [JsonExtensionData]
    IDictionary<string, object> Variables { get; set; } = new Dictionary<string, object>();
}

我的示例 json 看起来像这样

{
    "variables" : [
        {
            "a" : "1"
        }
    ]
}

当我发布我的数据时,Demo.Variables 看起来像这样

{[variables, [
  {
    "a": "1"
  }
]]}

我想要的是:

[{
  "a": "1"
}]

标签: c#

解决方案


您可能需要稍微不同地看待您的数据。

这个 JSON:

{
    "variables" : [
        {
            "a" : "1"
        }
    ]
}

可以看作是这样的字典集合:

public class Demo
{        
    public IEnumerable<Dictionary<string, string>> Variables { get; set; }
}

然后得到你要求的输出:

[{
  "a": "1"
}]

像这样序列化/反序列化:

public void Serialization()
{
    var dto = JsonConvert.DeserializeObject<Demo>(json);                       
    var postData = JsonConvert.SerializeObject(dto.Variables);
}

postData然后将反序列化回IEnumerable<Dictionary<string, string>>JSON 所指示的状态[{"a":"1"}]


推荐阅读