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为:

  • 相关阅读:
    Python入门-函数进阶
    Python入门-初始函数
    Leetcode300. Longest Increasing Subsequence最长上升子序列
    Leetcode139. Word Break单词拆分
    Leetcode279. Perfect Squares完全平方数
    Leetcode319. Bulb Switcher灯泡开关
    Leetcode322. Coin Change零钱兑换
    二叉树三种遍历两种方法(递归和迭代)
    Leetcode145. Binary Tree Postorder Traversal二叉树的后序遍历
    Leetcode515. Find Largest Value in Each Tree Row在每个树行中找最大值
  • 原文地址:https://www.cnblogs.com/zhenhong/p/4500605.html
Copyright © 2011-2022 走看看