C# Newtonsoft.Json 读写改json数据文件
1、生成一个json数据格式文件,数据格式正确性可在线检验json数据格式。
JsonTextWriter 是生成json数据节点的类,用法是 :
StringWriter sw = new StringWriter();
JsonTextWriter writer = new JsonTextWriter(sw);
writer.WriteStartObject(); // { (Json数据的大括号左边 )

2、 继续添加键值:wen
writer.WritePropertyName("wen");
writer.WriteStartArray();// [ (Json数据的大括号左边)
writer.WriteStartObject();// {
writer.WritePropertyName("ahref");
writer.WriteValue("1");
writer.WritePropertyName("imgpath");
writer.WriteValue("2");
writer.WritePropertyName("duanluo");
writer.WriteValue("3");
writer.WriteEndObject();//}
writer.WriteStartObject();//{
writer.WritePropertyName("ahref");
writer.WriteValue("1");
writer.WritePropertyName("imgpath");
writer.WriteValue("2");
writer.WritePropertyName("duanluo");
writer.WriteValue("3");
writer.WriteEndObject();// } (一组json数据结束标记)
writer.WriteStartObject();//{
writer.WritePropertyName("ahref");
writer.WriteValue("1");
writer.WritePropertyName("imgpath");
writer.WriteValue("2");
writer.WritePropertyName("duanluo");
writer.WriteValue("3");
writer.WriteEndObject();// } (一组json数据结束标记)
writer.WriteEndArray();// ] (多组json数据结束标记)
writer.WritePropertyName("img");
writer.WriteStartObject();//{
writer.WritePropertyName("ig1");
writer.WriteValue("3");
writer.WritePropertyName("ig2");
writer.WriteValue("3");
writer.WritePropertyName("ig3");
writer.WriteValue("3");
writer.WritePropertyName("ig4");
writer.WriteValue("3");
writer.WriteEndObject();//}
writer.WriteEndObject();//}
3、 json数据添加完成后,用StreamWrite 将 StringWriter 写入到文件中。
StreamWriter wtyeu = new StreamWriter(xmlpaths);
wtyeu.Write(sw);
wtyeu.Flush();
wtyeu.Close();
4、读写 JSON数据,更新某个键的值。
StreamReader file = new StreamReader(xmlpaths);
JsonTextReader reader = new JsonTextReader(file);
JObject obj = (JObject)JToken.ReadFrom(reader);
JToken token = obj["wen"];
foreach (JObject e in token)
{
e["ahref"] = "ahref";
e["imgpath"] = "img";
e["duanluo"] = "pppppp";
}
reader.Close();
//第一种写法
StringWriter sw = new StringWriter();
JsonTextWriter writer = new JsonTextWriter(sw);
obj.WriteTo(writer); //将根节点写入到StringWriter,这样生成的数 据没有空行。
writer.Flush();
StreamWriter wtyeu = new StreamWriter(xmlpaths);
wtyeu.Write(sw.ToString());
wtyeu.Flush();
wtyeu.Close();
writer.Close();
sw.Close();
//第二种写法
StreamWriter wtyeu = new StreamWriter(xmlpaths);
wtyeu.Write(obj.ToString()); //将JToken.ReadFrom(reader)的数据写入文件,这样的数据有空行。
wtyeu.Flush();
wtyeu.Close();
writer.Close();
sw.Close();

