将不同的对象转换为单个JSON字符串

时间:2018-08-24 06:41:51

标签: c# json json.net

我想这样创建json:

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

如何转换这种类型的json?我正在使用Newtonsoft.Json,但是我目前使用一种硬编码方法对其进行了转换。

2 个答案:

答案 0 :(得分:1)

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

使用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);

答案 1 :(得分:0)

如果我没记错的话,newtonsoft库不能从盒子里做到这一点。

您可以根据自己的方案创建一个类,然后对其进行序列化/反序列化。