假設有如下json 資料:
通常情況下,在json反序列化時,將json對映到序列化的類,無需指定其名稱。如
public jsontest}
在反序列化時會自動將json中的id與類中的id對應。
但是當鍵有特殊字元時,如 $ , @ 等,無法定義類的屬性中含有特殊字元,
因此,需要使用 [datacontract] 和 [datamember] 來定義資料協定。
1 [datacontract]2public
class jtest
3
6 [datamember(order = 1, name = "
@value
")]7
public
string value
8 [datamember(order = 2, name = "
$p")]
9public
string _p
10 }
反序列化
1 jtest test = serializer.readobject(new memorystream(encoding.utf8.getbytes(jsonstr))) as jtest;2 console.writeline( test.value );
序列化
1var stream = new memorystream();
2 serializer.writeobject(stream, test);
3byte databytes = new
byte[stream.length];
4 stream.position = 0;
5 stream.read(databytes, 0, (int)stream.length);
6string datastring = encoding.utf8.getstring(databytes);
完整測試類:
1using system;
2using system.text;
3using system.runtime.serialization;
4using system.runtime.serialization.json;
5using system.io;67
8class program
11
";15 datacontractjsonserializer serializer = new datacontractjsonserializer(typeof(jtest));
1617
//反序列化
18 jtest test = serializer.readobject(new memorystream(encoding.utf8.getbytes(jsonstr))) as jtest;
19 console.writeline( test.value );
2021
//序列化
22var stream = new memorystream();
23 serializer.writeobject(stream, test);
24byte databytes = new
byte[stream.length];
25 stream.position = 0;
26 stream.read(databytes, 0, (int)stream.length);
27string datastring = encoding.utf8.getstring(databytes);
2829 console.writeline(datastring);
30 console.readkey();
31 }
32 }
33 [datacontract]
34public
class jtest
35
38 [datamember(order = 1, name = "
@value
")]39
public
string value
40 [datamember(order = 2, name = "
$p")]
41public
string _p
42 }
43 }
C 中JSON序列化和反序列化
最近在寫些呼叫他人介面的程式,用到了大量的json xml序列化和反序列化,今天就來總結下json的序列化和反序列化的實現,有寫得不好的望園中博友多多指教。json序列化和反序列化幫助類 using system using system.collections.generic using syst...
json序列化 反序列化
json序列化 json的dumps方法可以將json格式資料序列為python的相關資料型別,比如str,常用於列印,另外,在序列化時,中文漢字被轉換為unicode編碼,在dumps函式中新增引數ensure ascii false可解決 dumps的indent參考可以調整顯示格式,即縮排,一...
C 中的Json的序列化和反序列化
json是一種通用的資料格式,我們在資料交換的時候,經常會用到,下面介紹c 中的json序列化和反序列化,當然也可用在asp.net,silverlight,wpf中。我們在下面例項講解如何進行json的序列化和反序列化,本文介紹兩種方案,net 3.5原生json操作和json.net中的json...