zoukankan      html  css  js  c++  java
  • [MVC_Json序列化]Json字符串反序列化成C#对象

    上一篇中有Json序列化相关问题得到了解决。

    那么结果集为Json串时,如何将Json串转成C#对象呢?

    现举例说明:

    -现有如下字符串数据

    string k = "{"rings":["
                    +"[[34995.513100000098,4304381.4231000002],[34988.120099999942,4304371.5420999993],"
                    + "[34995.513100000098,4304381.4231000002],[34988.120099999942,4304371.5420999993],"
                    + "[34995.513100000098,4304381.4231000002],[34988.120099999942,4304371.5420999993]]],"
                    + ""spatialReference":";

    -想将上面的数据转换成List<point>

    public class point {
                public decimal x { get; set; }
                public decimal y { get; set; }
            }

    步骤1:

    -截取字符串

    public string strCutOut(string str) {
                string str1 = str.Substring(str.IndexOf(":[[") + 3, str.IndexOf("]],") - 11);
                string str2 = str1.Replace("],[", "]$[");
                string str3 = str2.Replace("[", "{'x':");
                string str4 = str3.Replace("]", "}");
                string str5 = str4.Replace(",", ",'y':");
                string str6 = str5.Replace("$", ",");
                string str7 = str6.Replace("'", """);
                return str7;
            }

    -得到如下字符串

    "{"x":34995.513100000098,"y":4304381.4231000002},

    {"x":34988.120099999942,"y":4304371.5420999993},

    {"x":34995.513100000098,"y":4304381.4231000002},

    {"x":34988.120099999942,"y":4304371.5420999993},

    {"x":34995.513100000098,"y":4304381.4231000002},

    {"x":34988.120099999942,"y":4304371.5420999993}"

    步骤2:

    -引用System.Runtime.Serialization.Json;

    -反序列化字符串

    public List<point> convertObject(string json)
            {
                MemoryStream stream2 = new MemoryStream();
                DataContractJsonSerializer ser2 = new DataContractJsonSerializer(typeof(List<point>));
                StreamWriter wr = new StreamWriter(stream2);
                wr.Write(json);
                wr.Flush();
                stream2.Position = 0;
                Object obj = ser2.ReadObject(stream2);
                List<point> list = (List<point>)obj;
                return list;
            }

    步骤3:

    -调用字符串截取及反序列化字符串

    public void readJson(){
    
                string k = "{"rings":["
                    +"[[34995.513100000098,4304381.4231000002],[34988.120099999942,4304371.5420999993],"
                    + "[34995.513100000098,4304381.4231000002],[34988.120099999942,4304371.5420999993],"
                    + "[34995.513100000098,4304381.4231000002],[34988.120099999942,4304371.5420999993]]],"
                    + ""spatialReference":";
                string str = strCutOut(k);
                string json = "[" + str + "]";
                List<point> ls = convertObject(json);
            }

    *得到的结果集ls为:

  • 相关阅读:
    windows下编译php7图形库php_ui.dll
    php 图形用户界面GUI 开发
    使用PHPStorm 配置自定义的Apache与PHP环境
    公用代码实现两个表的拼接(部分代码)
    WCF学习心得--客户端获取服务端自定义类数据
    动态规划入门——Eddy's research II
    linux route命令学习
    软件度量都该度个啥?(5)——被吹得最多的六西格玛
    VSS的运用小内容(针对于vs2008版本)(小的问题都是,仅供参考--只针对于菜鸟级的)
    cocos2d-x学习日志(13) --A星寻路算法demo
  • 原文地址:https://www.cnblogs.com/zhenhong/p/4500605.html
Copyright © 2011-2022 走看看