如何在C#中编写Json文件?
您好我需要在C#中使用Json格式将以下数据写入文本文件? BRACKETS对于有效的JSON格式非常重要
[ { "Id": 1, "SSN": 123, "Message": "whatever" }, { "Id": 2, "SSN": 125, "Message": "whatever" } ]
这是我的模特class
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);
或者上面的代码更有效的版本(不使用string作为缓冲区):
//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序列化到文件
为什么? 这是常用的串行器和基准testing †‡的function比较 。
以下是链接文章的performance图:
这个单独的职位 ,指出:
Json.NET一直是内存有效的,stream读写大文档,而不是将它们全部加载到内存中,但是我能够find几个可以减less对象分配的关键位置…… (现在) Json.Net (6.0)分配的内存less于JavaScriptSerializer的8倍
‡。
†基准似乎是Json.Net 5,当前版本(写作时)是10.什么版本的标准.NET串行器使用没有提及
‡这些testing显然来自于图书馆的开发者。 我没有核实他们的要求 。 如果有疑问,自己testing一下。
Liam答案中的例子将文件保存为一行string。 我更喜欢添加格式。 将来有人可能想要在文件中手动更改一些值。 如果添加格式化,则更容易。
以下添加基本的JSON缩进:
string json = JsonConvert.SerializeObject(_data.ToArray(), Formatting.Indented);
这里使用JavaScriptSerializer类来构build这个function:
var json = JavaScriptSerializer.Serialize(data);
var responseData = //Fetch Data string jsonData = JsonConvert.SerializeObject(responseData, Formatting.None); System.IO.File.WriteAllText(Server.MapPath("~/JsonData/jsondata.txt"), jsonData);
这是用C#编写json对象的一种更简单的隐式方法
var returnData = new[] { new{StudentId = 101, StudentName = "Joseph Leung"}, new{StudentId = 102, StudentName = "Pravin Jha"} };