C 中JSON序列化和反序列化

2022-01-23 06:14:07 字數 3044 閱讀 6115

最近在寫些呼叫他人介面的程式,用到了大量的json、xml序列化和反序列化,今天就來總結下json的序列化和反序列化的實現,有寫得不好的望園中博友多多指教。

json序列化和反序列化幫助類:

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.runtime.serialization;

using

system.runtime.serialization.json;

using

system.io;

using

system.text.regularexpressions;

using

system.web.script.serialization;

namespace

helpclass.typehelp

//////

json反序列化(非二進位制方式)

/// ///

//////

public

static t jsondeserialize(string

jsonstring)

//////

json序列化(二進位制方式,實體類使用[serializable])

/// ///

//////

public

static

string jsonserializerio(t t)

}//////

json反序列化(二進位制方法,實體類使用[serializable])

/// ///

//////

public

static t jsondeserializeio(string

jsonstring)}}

}

上面這個類使用了兩中json序列化形式。

1、  使用system.web.script.serialization進行序列化和反序列化,不過在vs中需要新增引用system.web.script.serialization的時候,請先引用system.web.extensions。

使用方法:       

(1)需要序列化和反序列化的類

public

class

ddd

public

string d2

public

string d3

}

(2)序列化和反序列化

序列化單個類為json:

ddd a = new ddd ;

string stra = helpclass.typehelp.jsonhelp.jsonserializer(a);

ddd dd2 = helpclass.typehelp.jsonhelp.jsondeserialize(stra);

序列化類序列為json陣列:

ddd a = new ddd ;

ddd b = new ddd ;

ddd c = new ddd ;

list

abc = new list();

abc.add(a);

abc.add(b);

abc.add(c);

string strabc = helpclass.typehelp.jsonhelp.jsonserializer>(abc);

list

ddabc =helpclass.typehelp.jsonhelp.jsondeserialize>(strabc);

2、  使用system.runtime.serialization.json命名空間下的datacontractjsonserializer類進行 json的序列化和反序列化,該方法使用的二進位制的方式來序列化和反序列化,使用該類方法時需要在對應的實體類中有相應的標識(如: [datacontract] [datamember(name = "")])在下面的呼叫時有相關說明。

使用方法:       

(1)需要序列化和反序列化的類

[datacontract]

public

class

ddd [datamember(name = "d2"

)]

public

string d2

[datamember(name = "d3"

)]

public

string d3

}

(2)序列化和反序列化

序列化單個類為json:

ddd a = new ddd ;

string stra = helpclass.typehelp.jsonhelp.jsonserializer(a);

ddd dd2 = helpclass.typehelp.jsonhelp.jsondeserialize(stra);

序列化類序列為json陣列:

ddd a = new ddd ;

ddd b = new ddd ;

ddd c = new ddd ;

list

abc = new list();

abc.add(a);

abc.add(b);

abc.add(c);

string strabc = helpclass.typehelp.jsonhelp.jsonserializer>(abc);

list

ddabc =helpclass.typehelp.jsonhelp.jsondeserialize>(strabc);

看完了上面的這些或許你已經對json的序列化和反序列化有了一定的了解,今天就寫到這裡,下次就總結一下xml的序列化和反序列化。

Json序列化和反序列化

json測試 public class jsontest irun 實體序列化和反序列化 string json1 jsonhelper.serializeobject sdudent json1 student sdudent1 jsonhelper.deserializejsontoobject...

json序列化 反序列化

json序列化 json的dumps方法可以將json格式資料序列為python的相關資料型別,比如str,常用於列印,另外,在序列化時,中文漢字被轉換為unicode編碼,在dumps函式中新增引數ensure ascii false可解決 dumps的indent參考可以調整顯示格式,即縮排,一...

序列化和反序列化 C 序列化與反序列化。

序列化介紹 把物件用一種新的格式來表示。系列化只序列化資料。序列化不建議使用自動屬性 為什麼要序列化 將乙個複雜的物件轉換流,方便儲存與資訊交換。class program class person public int age 二進位制序列化 就是將物件變成流的過程,把物件變成byte class...