To manually read and write JSON objects, JSON. NET provides two abstract classes, jsonreader and jsonwriter, and their corresponding Derived classes:
1. jsontextreader and jsontextwriter
Jsontextwriter is used to read and write the text of a json object. It has a large number of settings to control the JSON object format.
Test:
// Write operation
stringbuilder sb = new stringbuilder ();
stringwriter Sw = new stringwriter (SB);
using (jsonwriter = new jsontextwriter (SW)
{
Jsonwriter. Formatting = formatting. indented;
Jsonwriter. writestartobject ();
Jsonwriter. writepropertyname ("CPU ");
Jsonwriter. writevalue ("Intel ");
Jsonwriter. writepropertyname ("PSU ");
Jsonwriter. writevalue ("500 W ");
Jsonwriter. writepropertyname ("drives ");
Jsonwriter. writestartarray ();
Jsonwriter. writevalue ("DVD read/writer ");
Jsonwriter. writecomment ("(broken )");
Jsonwriter. writevalue ("500 gigabyte hard drive ");
Jsonwriter. writevalue ("200 gigabype hard drive ");
Jsonwriter. writeendarray ();
Jsonwriter. writeendobject ();
}
Console. writeline (sb. tostring ());
Output result:
{
"CPU": "Intel ",
"PSU": "500 W ",
"Drives ":[
"DVD read/writer"
/* (Broken )*/,
"500 gigabyte hard drive ",
"200 gigabype hard drive"
]
}
// Read operation
Textreader txtreader = new stringreader (sb. tostring ());
Using (jsonreader = new jsontextreader (txtreader ))
{
String readresult = "{\ n ";
While (jsonreader. Read ())
{
If (jsonreader. tokentype = jsontoken. propertyname)
{
Readresult + = (string) jsonreader. Value + ":";
}
Else if (jsonreader. tokentype = jsontoken. String)
{
Readresult + = (string) jsonreader. Value + "\ n ";
}
Else if (jsonreader. tokentype = jsontoken. startarray)
{
Readresult + = "[\ n ";
While (jsonreader. Read ())
{
If (jsonreader. tokentype = jsontoken. endarray)
{
Readresult = readresult. Remove (readresult. Length-2, 1 );
Readresult + = "] \ n ";
Break;
}
If (jsonreader. tokentype = jsontoken. String)
Readresult + = (string) jsonreader. Value + ", \ n ";
Else if (jsonreader. tokentype = jsontoken. Comment)
Readresult + = "/*" + (string) jsonreader. Value + "*/, \ n ";
}
}
}
Readresult + = "} \ n ";
Console. writeline (readresult );
}
2. jtokenreader and jtokenwriter
Jtokenreader and jtokenwriter read and write data from the LINQ to JSON object. They exist in the namespace of newtonsoft. JSON. LINQ.
jobject o = new jobject (
New jproperty (" name "," zhangsan "),
New jproperty (" Birthday ", new datetime (1985, 11, 27);
jsonserializer serializer = new jsonserializer ();
person = (person) serializer. deserialize (New jtokenreader (O), typeof (person);
console. writeline (person. name); // output zhangsan