繁体   English   中英

在 C# 中反序列化自定义 JSON

[英]Deserializing custom JSON in C#

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

这是 Json 的样子:

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

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

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

有没有一种快速的方法可以像那样去消毒? 有关如何轻松完成此操作的任何提示或提示?

试试这个,我把你的 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; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM