zoukankan      html  css  js  c++  java
  • winform 程序中 反序列化

    using System.Runtime.Serialization.Json;  

    (如果不能引用.json),注意在项目引用中右击引用   System.ServiceModel  和 System.ServiceModel.Web, System.Runtime.Serialization

    将json格式的数据反序列化为对象,有以下注意。

    1.  josn 数据格式为 {"a":1,"b":2,"c":"3"} ,数组格式为[ {"a":1,"b":2,"c":"3"}]

    2.  反序列化之前,要自定义类。而且这个类中的所有成员必须是 json 数据 属性的子集

    (可以只有a属性,b属性;或者a,b,c属性都有。但是不能有json中不存在的属性值如d,e,f,这样反序列化会报错)

    3. 反序列化数组只要声明  public class  xx: List<x>,然后直接将调用方法将 json数据反序列化成 xx 对象数组就行了。

    json数组反序列化 -------------------通用代码

    public static T JsonDeserialize<T>(string jsonString)
    {

    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));

    MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));

    T obj = (T)ser.ReadObject(ms);

    return obj;

    }

    例:

    1.现有个json数据 {"a":1,"b":2,"c":"3"},注意 不是数组数据 

    1)首先生成类

    [Serializable]

    public class mydata
    {

    public string a = null;
    public string b = null;           //不能有a,b,c意外的任何属性

    }

    2)调用代码

    mydata aa = JsonDeserialize<mydata>(a.context);
    buy_link_seed=aa.buy_link_seed;

    2. 假如现在是json数组。[{"a":1,"b":2,"c":"3"}]

    此时在上面代码基础上应添加一个类    

    public class mydatas : List<mydata>
    {
    }

    然后将json数组数据 反序列化为 mydatas (也就是对象mydata的 数组)

    调用代码:

    mydatas aa = JsonDeserialize<mydatas>(a.context);
    buy_link_seed=aa[0].buy_link_seed;

  • 相关阅读:
    【BZOJ 4151 The Cave】
    【POJ 3080 Blue Jeans】
    【ZBH选讲·树变环】
    【ZBH选讲·拍照】
    【ZBH选讲·模数和】
    【CF Edu 28 C. Four Segments】
    【CF Edu 28 A. Curriculum Vitae】
    【CF Edu 28 B. Math Show】
    【CF Round 439 E. The Untended Antiquity】
    【CF Round 439 C. The Intriguing Obsession】
  • 原文地址:https://www.cnblogs.com/StudyLife/p/2776256.html
Copyright © 2011-2022 走看看