必威体育Betway必威体育官网
当前位置:首页 > IT技术

将带数组的json反序列化成对象,取到数组的每一个元素值,及取json值

时间:2019-08-08 01:14:22来源:IT技术作者:seo实验室小编阅读:68次「手机版」
 

json 数组

Json对象和json数组的反序列化方式不同:

先简单介绍一下对象和数组区别:

这里写图片描述

花括号的是对象,数组不用解释,想获取到数组中每一个元素就得遍历数组:

这里写图片描述

目的:将类似这样的json数据转为对象,然后获取到红色框和绿色框的值;

这里写图片描述

新建一个控制台应用程序

一、生成这个Json对应的实体类

将这个json数据复制,然后在Vs里面新建一个类,编辑—>选择性粘贴—>json

并将红色框这里的数组改为List

这里写图片描述

二、在项目中引用

这里写图片描述

三、将Jsoon数据反序列化

运行结果:

这里写图片描述

demo:

public void testJsonToObject()
        {
            String jsonStr = "{\"name\":\"BeJson\",\"url\":\"http://www.bejson.com\",\"links\":[{\"entityName\":\"Google\",\"shop\":\"http://www.google.com\"},{\"entityName\":\"Baidu\",\"shop\":\"http://www.baidu.com\"}]}";
            System.Web.Script.Serialization.javaScriptserializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
            Test.Testjsonobject jsonObj = js.Deserialize<Test.TestJsonObject>(jsonStr);//反序列化
            if(jsonObj.name== "BeJson")
            {
                List<Beer2dFire.Link> linkData = jsonObj.links;
                foreach (Beer2dFire.Link item in linkData)
                {
                    String entityName = item.entityName;
                    String shop = item.shop;
                    System.console.WriteLine("link里面的数据为entityName:" + entityName + ",shop:" + shop);
                }
            }
        }

二:

取到Json中的Json的值即取到下图中的street这类值

这里写图片描述

将这个Json数据创建一个Json实体类

然后反序列化为对象

public class TestJsonArr
    {
        public string name { get; set; }
        public string url { get; set; }
        public int page { get; set; }
        public bool isNonProfit { get; set; }
        public Address address { get; set; }
        public List<LinkTwo> links { get; set; }
    }

    public class Address
    {
        public string street { get; set; }
        public string city { get; set; }
        public string country { get; set; }
    }

    public class LinkTwo
    {
        public string linksName { get; set; }
        public string linksUrl { get; set; }
    }

然后在另一个类中写方法:
public String testJson()
        {
            String jsonStr = "{\"name\":\"BeJson\",\"url\":\"http://www.bejson.com\",\"page\":88,\"isNonProfit\":true,\"address\":{\"street\":\"科技园路.\",\"city\":\"江苏苏州\",\"country\":\"中国\"},\"links\":[{\"linksName\":\"Google\",\"linksUrl\":\"http://www.google.com\"},{\"linksName\":\"Baidu\",\"linksUrl\":\"http://www.baidu.com\"},{\"linksName\":\"SoSo\",\"linksUrl\":\"http://www.SoSo.com\"}]}";
            System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
            TestJsonArr jsonArr = js.Deserialize<TestJsonArr>(jsonStr);
            String name = jsonArr.name;
            String url = jsonArr.url;
            //adress里面的数据
            String street = jsonArr.address.street;
            String city = jsonArr.address.city;

            //links里面的数据
            List<LinkTwo> linkTow = jsonArr.links;
            String linkStr = "";
            foreach(LinkTwo item in linkTow)
            {
                String linksName = item.linksName;
                String linksUrl = item.linksUrl;
                linkStr = linksName + "," + linksUrl;
            }

            Console.WriteLine("name为:" + name + "------url为:" + url + "------address里面的street为:" + street + ",------" + city + "------links里面的数据为:" + linkStr);
            Console.WriteLine();

            return linkStr;
        }

运行结果为:

这里写图片描述

相关阅读

使用FastJson对JSON字符串、JSON对象及JavaBean之间的

maven依赖包: <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --><dependency><groupId>com.alibaba</groupId><a

jquery的$().each,$.each 遍历对象和数组

原文链接 http://www.frontopen.com/1394.html在jquery中,遍历对象和数组,经常会用到$().each和$.each(),两个方法。两个方法是有区

String与数组

string A=to_string(a)求长度C/C++ strlen(str)和str.length()和str.size()都可以求字符串长度。其中str.length()和str.size()是

C/C++数组初始化的一些误区

以前我这样初始化一个数组,并自我感觉良好:int a[5] = { 0 }; // 全部初始化为0这种简单的写法让我非常爽,于是我又想把数组全部初

Java中数组的定义及初始化

1. 定义及初始化 1. 1动态初始化(声明并开辟数组) 数组类型[] 数组名 = new 数据类型[数组长度];  其中,数据类型可以是8种基本的

分享到:

栏目导航

推荐阅读

热门阅读