关于Newtonsoft.Json读写
参考了博客https://www.cnblogs.com/zoujinhua/p/10330066.html进行修改,如有侵权请告知。
1:添加Newtonsoft.Json引用,NuGet程序包搜索Json,下载第一个(火箭黑色图标);
2:参考博客进行修改,在外面又添加了一节点。
public class Root
{
/// <summary>
///
/// </summary>
public List<json> abc { get; set; }
}
3:添加新节点
json js1 = new json();
parseJson par = new parseJson();
js1.message = "abc";
js1.nu = "367847964498";
js1.ischeck = "1";
js1.condition = "F00";
js1.com = "shunfeng";
js1.status = "200";
js1.state = "3";
DataItem abc = new DataItem();
js1.data = new List<DataItem>();
abc.time = "2017-09-21 07:02:41";
abc.location = "";
abc.ftime = "2017-09-21 07:02:41";
abc.context = "快件到达 【淄博市桓台田庄速运营业点 】";
js1.data.Add(abc);
js1.data.Add(abc);
js1.data.Add(abc);
4:每次写入在原有节点上添加新节点;
public Root readJson(string str)
{
/*读取整个数据*/
Root rt = JsonConvert.DeserializeObject<Root>(str);
return rt;
}
public void writeJson(string path, ref json js1)
{
/*写Json*/
Root root = new Root();
JsonSerializer serializer = new JsonSerializer();
if (!File.Exists(path))
{
FileInfo file = new FileInfo(path);
/*文件不存在则创建*/
file.Directory.Create();
root.abc = new List<json>();
}
else
{
/*读出原有数据*/
root = readJson(File.ReadAllText(path));
}
root.abc.Add(js1);
/*第一种写入数据*/
//把模型数据写到文件
using (StreamWriter sw = new StreamWriter(path))
{
serializer.Converters.Add(new JavaScriptDateTimeConverter());
serializer.NullValueHandling = NullValueHandling.Ignore;
//构建Json.net的写入流
JsonWriter writer = new JsonTextWriter(sw);
serializer.Serialize(writer, root);
writer.Close();
sw.Close();
sw.Dispose();
}
/*第二种写入数据*/
//将要写入的数据序列化
string json = JsonConvert.SerializeObject(root);
//把模型数据写到文件
using (StreamWriter sw = new StreamWriter(path))
{
//构建Json.net的写入流
JsonWriter writer = new JsonTextWriter(sw);
//把模型数据序列化并写入Json.net的JsonWriter流中
writer.WriteRaw(json);
writer.Close();
sw.Close();
sw.Dispose();
}
}
5:每次写入的Json都是在后面累加,没有格式化,不知道怎么处理