首先用最基本的JsonTextWriter和JsonTextReader
JsonTextWriter使用成對的方法來輸出Json字串
JsonTextReader使用Read方法來持續讀取Json字串
看得出來在使用上有點拖泥帶水
JsonTextWriter使用成對的方法來輸出Json字串
JsonTextReader使用Read方法來持續讀取Json字串
看得出來在使用上有點拖泥帶水
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
| static void Main( string [] args) { string jsonString = string .Empty; using (StringWriter sw = new StringWriter()) { using (JsonTextWriter writer = new JsonTextWriter(sw)) { // 開始輸出物件 writer.WriteStartObject(); // 輸出屬性:id writer.WritePropertyName( "id" ); writer.WriteValue(1); // 輸出屬性:name writer.WritePropertyName( "name" ); writer.WriteValue( "xian" ); // 輸出屬性today writer.WritePropertyName( "today" ); writer.WriteValue(DateTime.Today); // 開始輸出陣列 writer.WritePropertyName( "arraydata" ); writer.WriteStartArray(); writer.WriteValue(1); writer.WriteValue(2); writer.WriteValue(3); // 結束輸出陣列 writer.WriteEndArray(); // 結束串出物件 writer.WriteEndObject(); } jsonString = sw.ToString(); Console.WriteLine(jsonString); } using (StringReader sr = new StringReader(jsonString)) { using (JsonTextReader reader = new JsonTextReader(sr)) { while (reader.Read()) { if (reader.Value != null ) { Console.WriteLine( "token:{0}, value:{1}" , reader.TokenType, reader.Value); } else { Console.WriteLine( "token:{0}" , reader.TokenType); } } } } Console.ReadLine(); } |
使用JObject可以簡化一點
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| // 淮備Json資料 JObject obj1 = new JObject() { new JProperty( "id" , 1), new JProperty( "name" , "xian" ), new JProperty( "today" , DateTime.Today), new JProperty( "arraydata" , new JArray() { new JValue(1), new JValue(2), new JValue(3), }) }; string jsonString = obj1.ToString(); Console.WriteLine(jsonString); // 解析Json格式 JObject obj2 = JObject.Parse(jsonString); Console.WriteLine( "id:{0}, name:{1}, today:{2}, arraydata:{3}" , obj2[ "id" ], obj2[ "name" ], obj2[ "today" ], obj2[ "arraydata" ]); Console.ReadLine(); |
最常使用還是JsonConvert這一個方式,用法也很直覺
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| // 淮備資料 Person p1 = new Person() { id = 1, name = "xian" , today = DateTime.Today }; // 序列化物件 string jsonString = JsonConvert.SerializeObject(p1); Console.WriteLine( "jsonstring:{0}" , jsonString); // 反序列化物件 Person p2 = JsonConvert.DeserializeObject<Person>(jsonString); Console.WriteLine( "id:{0}, name:{1}, today:{2}" , p2.id, p2.name, p2.today); Console.ReadLine(); |
from : http://blog.developer.idv.tw/2013/06/jsonnet.html
沒有留言:
張貼留言