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;

  • 相关阅读:
    ACM成长之路
    洛谷P1047 校门外的树
    洛谷P1046 陶陶摘苹果
    2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 F题
    图论:POJ2186-Popular Cows (求强连通分量)
    DFS:POJ1562-Oil Deposits(求连通块个数)
    DFS:POJ3620-Avoid The Lakes(求最基本的联通块)
    map函数的应用:UVa156-Ananagrams
    set的应用:UVa10815-Andy's First Dictionary
    水题:UVa253-Cube painting
  • 原文地址:https://www.cnblogs.com/StudyLife/p/2776256.html
Copyright © 2011-2022 走看看