首页 > 解决方案 > 在 C# 中反序列化自定义 JSON

问题描述

我正在尝试将一些自定义 JSON 反序列化到字典中,但我很难弄清楚如何处理它。我在拥有 Model 类之前已经完成了它,但是在这种情况下,我需要以特定的方式来完成它。

这是 Json 的样子:

 {
     Values:
        {
          "Value1":"XXX",
          "value2" :
                 {
                       "SubValue1":"YX",
                       "SubValue2":"AB"
                 }
       }
}

这里的目标是创建一个 Dictionary<string,string> 并填充它,以便:

    Key          Value
    Value1       XXX
    Value2       {
                   "SubValue1":"YX",
                   "SubValue2":"AB"
                 }   

有没有一种快速的方法可以像这样对它进行脱毒?有关如何轻松完成此操作的任何提示或提示?

标签: c#jsonasp.net-core

解决方案


试试这个,我将你的 json 转换为 Dictionary<string,string>

var json = "{\"Values\":{\"Value1\":\"XXX\",\"value2\":{\"SubValue1\":\"YX\",\"SubValue2\":\"AB\"}}}";
var jsonDeserialized =  JsonConvert.DeserializeObject<Root>(json);

Dictionary<string,string>  dict = jsonDeserialized.Values.ToDictionary(i => i.Key, j => j.Value.ToString());

dict["value2"] = dict["value2"].Replace("\n", "").Replace("\r", "");

输出

{
  "Value1": "XXX",
  "value2": "{\"SubValue1\":\"YX\",\"SubValue2\":\"AB\"}"
}

如何使用

string value1 = dict["Value1"];
Value value2 = JsonConvert.DeserializeObject<Value>(dict["value2"]);
Values values = new Values { Value1=value1, Value2=value2 };

价值1

XXX

价值2

{
"SubValue1":"YX",
"SubValue2":"AB"
}

班级

public class Values
{
    public string Value1 {get; set;}
    public Value Value2 {get; set;}
}
public class Value
{
    public string SubValue1 { get; set; }
    public string SubValue2 { get; set; }
}
public class Root
{
    public Dictionary<string, Object> Values { get; set; }
}

推荐阅读