如何用C#编写JSON文件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (62)

我需要在C#中使用Json格式将以下数据写入文本文件?BRACKETS对于有效的JSON格式非常重要

[
  {
    "Id": 1,
    "SSN": 123,
    "Message": "whatever"

  },
  {
   "Id": 2,
    "SSN": 125,
    "Message": "whatever"
  }
]

这是我的模型类

public class data
{
    public int Id { get; set; }
    public int SSN { get; set; }
    public string Message {get; set;}

}
提问于
用户回答回答于

我会推荐Json.Net,看下面的例子:

List<data> _data = new List<data>();
_data.Add(new data()
{
    Id = 1,
    SSN = 2,
    Message = "A Message"
});

string json = JsonConvert.SerializeObject(_data.ToArray());

//write string to file
System.IO.File.WriteAllText(@"D:\path.txt", json);

或者上述代码稍微更高效的版本(不使用字符串作为缓冲区):

//open file stream
using (StreamWriter file = File.CreateText(@"D:\path.txt"))
{
     JsonSerializer serializer = new JsonSerializer();
     //serialize object directly into file stream
     serializer.Serialize(file, _data);
}

文档:将JSON序列化为文件

为什么?以下是常用的串行器以及基准测试 †‡ 的功能对比

以下是链接文章的性能图表:

这个单独的帖子指出:

Json.NET一直具有内存效率,可以读取和写入大量文档,而不是将它们全部加载到内存中,但是我可以找到几个可以减少对象分配的关键位置...... (现在) Json.Net (6.0)分配的内存少于JavaScriptSerializer的8倍

†基准似乎是Json.Net 5,当前版本(写作时)为10.标准.NET串行器使用的是什么版本未提及

‡这些测试显然来自主要图书馆的开发人员。我没有核实他们的说法。如果有疑问,请自己测试一下。

用户回答回答于

Liam答案中的例子将文件保存为一行字符串。我更喜欢添加格式。将来有人可能想要在文件中手动更改某些值。如果添加格式化,则更容易。

以下添加基本的JSON缩进:

 string json = JsonConvert.SerializeObject(_data.ToArray(), Formatting.Indented);

扫码关注云+社区