【问题标题】:Newtonsoft Json How to write properties from inner class to parent class with out creating of inner class objectNewtonsoft Json 如何在不创建内部类对象的情况下将属性从内部类写入父类
【发布时间】:2021-04-16 15:07:34
【问题描述】:

例如我有课:

public class ParentClass
{
  public int Value1 {get; set;} = 1;
  public int Value2 {get; set;} = 2;
  public InnerClass InnClass {get; set;} = new InnerClass();
}

public class InnerClass
{
  public int Value3 {get; set;} = 3;
  public int Value4 {get; set;} = 4;
}

当我序列化 ParentClass 的实例时

public ParentClass parClass = new ParentClass();
string result = JsonConvert.SerializeObject(parClass);

它返回 Json:

“{“Value1”: 1, “Value2”: 2, “InnClass”: {“Value3”: 3, “Value4”: 4}}”

如何让它像这样序列化:

“{“Value1”: 1, “Value2”: 2, “Value3”: 3, “Value4”: 4}”

我知道最简单的方法就是将属性从内部类移动到父类,然后对其进行序列化。但它会破坏程序的结构。那么有没有办法使用自定义 JsonConverter 或其他方式来做到这一点?

【问题讨论】:

  • 你在哪里序列化这个,你的帖子没有包括所有内容?它现在序列化的方式确实是正确的,你为什么不想这样做?当你去反序列化你的对象时,一切都会被正确反序列化。
  • 它包括一切。我只是使用 JsonConvert.SerializeObject() 方法
  • 为什么要改这个,不知道属性在哪里怎么反序列化?
  • 没有反序列化的任务。
  • JsonConverter这是什么,应该是JsonConvert

标签: c# json serialization json.net


【解决方案1】:

创建一个动态对象,将值放入其中,并将其序列化为 JSON。

【讨论】:

  • 是的,这是创建动态对象或将 1 个类中的属性一起移动的最简单方法。但我仍然想知道是否可以使用 JsonWriter 或 ContractReslover 来做到这一点