C#中將 Json 格式和對(duì)應(yīng)的C#實(shí)體類格式的相互轉(zhuǎn)換

給一個(gè)在線轉(zhuǎn)換網(wǎng)站:http://www.jsons.cn/jsontomodel/

關(guān)注我的GitHub:https://github.com/JackMin1314/Learning_Skill/
怎么將 類的對(duì)象換成json字符串 以及 json字符串轉(zhuǎn)換成類的對(duì)象

如何去定義相應(yīng)的類的對(duì)象,對(duì)于嵌套的json格式相應(yīng)的 類類型定義

  1. json格式 簡(jiǎn)單認(rèn)識(shí)

    json可以簡(jiǎn)單的理解為是一個(gè)鍵值對(duì)的形式,類似python中的字典格式,

    {"key1":"value1","key2":"value2",...}

    給定 key 就可以得到相應(yīng)的 value (value可能有多個(gè)類型) .


    json格式允許嵌套使用. 通常是用字符串的形式存在.

  2. 對(duì)象怎么轉(zhuǎn)換成json格式

    通常我們拿到的是一系列鍵值對(duì),需要json格式化(序列化為json形式)

    我們?cè)趺吹玫竭@些鍵值對(duì)?可以用類的成員復(fù)制得到例如:

    //為了給內(nèi)部數(shù)據(jù)logintime,number等賦值,這里創(chuàng)建類Positioninfo的對(duì)象test
    Positioninfo test = new Positioninfo();
    test.logintime = "2019-07-16";
    test.number = "177**";
    test.token = "abcd123";</pre>

  3. json可以轉(zhuǎn)換成的 對(duì)象 有哪些

    這里的類的對(duì)象,類含義可以是系統(tǒng)原有的類,也可以是自定義的類類型,但是要注意json轉(zhuǎn)換的應(yīng)該是類的對(duì)象,不是類本身!


    json本身就可當(dāng)做字符串進(jìn)行處理,但是一般不推薦,不如轉(zhuǎn)換成C#對(duì)象簡(jiǎn)單易于理解.


    為了實(shí)際需要通常創(chuàng)建的是自定義的類的對(duì)象,相應(yīng)的key看成類的成員變量,依據(jù)實(shí)際需要還會(huì)有成員函數(shù)存在,這些都是允許的.

  4. 嵌套的json怎么定義需轉(zhuǎn)換的類,并創(chuàng)建類的對(duì)象

    由2可知如何創(chuàng)建相應(yīng)的對(duì)象

    對(duì)于嵌套的json例如

    {
    "status": "200",
    "msg": "成功",
    "data": {
    "lng": "119.29925",
    "lat": "32.16172"
    }
    }

    如何去定義轉(zhuǎn)換的對(duì)象的類呢?(類可以嵌套定義??)

    public class Data
    {
    private string mylng;
    private string mylat;
    public string lng
    {
    get { return mylng; }
    set { mylng = value; }
    }
    public string lat
    {
    get { return mylat; }
    set { mylat = value; }
    }
    ?
    }
    /// <summary>
    /// Json字符串生成C#實(shí)體類
    /// </summary>
    public class Response
    {
    private string mystatus;
    private string mymsg;
    private Data mydata;//注意這塊聲明前面定義內(nèi)層的類的對(duì)象
    public string status
    {
    get { return mystatus; }
    set { mystatus = value; }
    }
    public string msg
    {
    get { return mymsg; }
    set { mymsg = value; }
    }
    /// <summary>
    /// 這里定義在Response類里面,類可以嵌套
    /// 嵌套的實(shí)體類.見http://www.jsons.cn/jsontomodel/在線轉(zhuǎn)換
    /// </summary>
    public Data data
    {
    get { return mydata; }
    set { mydata = value; }
    }
    ?
    }

    為了進(jìn)行嵌套,需要先定義內(nèi)層的類類型public class Data{....}(因?yàn)楹竺嬉?先在前面定義);

    然后定義最外層類類型public class Response{......public Data data{get;set;}} ,最后創(chuàng)建public List<Response> JsonToObject(string jsonString){...}方法. List<Response>是List集合里面是Response類的對(duì)象.

    public List<Response> JsonToObject(string jsonString)
    {
    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<Response>));
    jsonString = "[" + jsonString + "]";
    MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
    object ob = serializer.ReadObject(stream);
    List<Response> Ls = (List<Response>)ob;
    return Ls;
    }

部分using根據(jù)提示添加即可

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容