C# 自定义 Json.NET 列表序列化

标签 c# json serialization

我有一个 DataObject 类列表:

public class DataObject
    {
        public string Name { get; set; }

        public List<Field> Fields { get; set; }
    }
}



public class Field
{

    public string Name { get; set;}
    public string Type { get; set; }
    public Object Value { get; set; }

    public Field(string name, string type, string value)
    {
        Name = name;
        Type = type;
        if(type == "string") Value = (string)value;
        else Value = Int32.Parse(value);
    }
}

我想将由 DataObject 类组成的列表序列化为 .json 文件。我在下面展示的使用 Json.NET 的方式中,我尝试了几种方案但没有找到如何执行此操作。

例子:

Field field1 = new Field("Brand", "string", "Volvo);
Field field2 = new Field("Power", "int", 200);
List<Field> fields = new List<Field>{field1, field2};
DataObject car = new DataObject{
   Name = "Car",
   Fields = list
}
List<DataObjects> objects = new List<DataObjects>{car};

结果:

{
 "Car":{
   "Brand" : "Volvo",
   "Power" : 200
  }
}

最佳答案

使用 Newtonsoft.Json,序列化相当容易。我拿了你的代码并添加了以下行:

string json = JsonConvert.SerializeObject(objects, Newtonsoft.Json.Formatting.Indented);

它给了我以下输出:

[
  {
    "Name": "Car",
    "Fields": [
      {
        "Name": "Brand",
        "Type": "string",
        "Value": "Volvo"
      },
      {
        "Name": "Power",
        "Type": "int",
        "Value": 200
      }
    ]
  }
]

关于C# 自定义 Json.NET 列表序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56043622/

相关文章:

javascript - Angular/C# CORS 问题

java - 使用 GSON 发送 Volley 参数

javascript - 如何将 Geodjango 与 Google Maps API 3 集成?

django - 在Django中自定义Json序列化器的格式?

Java JSONParser 区分对象类型

c# - 如何轻松隐藏 UWP MediaPlayerElement 中除少数几个之外的所有传输控件?

c# - 在 C# 中使用 "using"关键字

c# - 桌面应用程序的数据库托管

javascript - 使用 Jquery 获取 JSON 属性

iphone - 将 CG 结构序列化为适当对象的最佳实践