首页 > 解决方案 > Convert different object into single JSON string

问题描述

I want to create json like this:

{  
   "classA":{  
      "A":"",
      "B":"",
      "C":""
   },
   "classB":{  
      "E":"",
      "A":"",
      "G":""
   },
   "classC":{  
      "A":"",
      "B":""
   },
   "classD":{  
      "A":""
   }
}

How to convert this type of json? I am using Newtonsoft.Json, however I currently convert it with a hard coded method.

标签: c#jsonjson.net

解决方案


最简单的方法是为所有对象创建一个包装器类并反/序列化包装器:

使用json2csharp之类的工具生成类结构:

public class ClassA
{
    public string A { get; set; }
    public string B { get; set; }
    public string C { get; set; }
}

public class ClassB
{
    public string E { get; set; }
    public string A { get; set; }
    public string G { get; set; }
}

public class ClassC
{
    public string A { get; set; }
    public string B { get; set; }
}

public class ClassD
{
    public string A { get; set; }
}

public class Wrapper
{
    public ClassA classA { get; set; }
    public ClassB classB { get; set; }
    public ClassC classC { get; set; }
    public ClassD classD { get; set; }
}

在此之后,您可以像这样反序列化它:

var obj = JsonConvert.DeserializeObject<Wrapper>(json);

要将现有对象序列化为 json 字符串,您可以这样进行:

var obj = new Wrapper();
var json = JsonConvert.SerializeObject(obj);

推荐阅读