依赖

<!-- fastjson -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.75</version>
</dependency>
  • JSON对象 是直接可以使用JQuery操作的格式
  • JSON字符串 仅仅只是一个字符串,一个整体,不截取的话没办法取出其中存储的数据,不能直接使用
  • JSON数组 元素是json对象的数组,就是json数组
  • JSON对象转实体类,对象key和实体类属性值对应

JSON对象

var str2 = { "name": "deluyi", "sex": "man" };


JSONObject object = new JSONObject();
object.put("ServerInfo.DeviceServiceUrl","http://192.168.2.9:8080/HearBeat");
object.put("DeviceInfo.DNS","202.106.0.20");
baseRequestInfo.setBizContent(JSON.toJSONString(object));

JSON字符串(注意大括号外的引号)

var str1 = '{ "name": "deyuyi", "sex": "man" }';

JSON数组

packJson = [
    {"name":"zhang", "password":"123"},
    {"name":"li", "password":"456"}
 ];

//遍历json数字
for(var i = 0; i < packJson.length; i++){ 
    alert(packJson[i].name + " " + packJson[i].password);
}

JSONArray array = new JSONArray();
array.add("DeviceInfo.SoftwareVersion");

baseRequestInfo.setBizContent(JSON.toJSONString(array));

只有数组或者json数组才可以使用length方法。json对象使用length方法无效。
如果json对象的子元素是数组或者json数组,也可以使用length方法。可以用于遍历数据。

JSON转实体类

JSONObject.parseObject(jsonString, BaseResponseInfo.class);

实体类转JSON字符串

String message = JSON.toJSONString(baseRequestInfo);

json字符串和json对象的转换

json字符串转json对象,调用JSON.parse()方法

var b='{"name":"2323","sex":"afasdf","age":"6262"}' //json字符串
  
var bToObject=JSON.parse(b); //使用parse方法

console.log(bToObject.name);//2323

json对象转为json字符串,调用JSON.stringify()

var a={"name":"tom","sex":"男","age":"24"}//json对象

var aToString=JSON.stringify(a); //转换方法JSON.stringify()

console.log(aToString);//{"name":"tom","sex":"男","age":"24"}

1、String转JSONObject

前言:String 是JSONObject格式的字符串

eg:

java json 实体类转 嵌套 json转实体类对象_html

JSONObject jSONObject = JSONObject.parseObject(String);

2、String转JSONArray

前言:String 是JSONArray格式的字符串

eg:

java json 实体类转 嵌套 json转实体类对象_JSON_02

JSONArray jsonArray= JSONArray.parseArray(String);

3、JSONObject中的数组提取为JSONArray

eg:

{
    "AreaName": "北京",
    "CityId": 110100,
    "NoMarket": false,
    "OldCityId": 646,
    "Pinyin": "beijing",
    "ProvinceId": 110000,
    "Result": [
        {
            "ItemName": "优惠",
            "ItemUrl": "/list/a646c12-1.html",
            "Title": "Stelvio 钜惠23.4万起",
            "Url": "//www.autohome.com.cn/market/201904/100223763.html"
        },
        {
            "ItemName": "优惠",
            "ItemUrl": "/list/a646c12-1.html",
            "Title": "马驹桥林肯中心年中大促",
            "Url": "//www.autohome.com.cn/market/201906/100230932.html"
        },
        {
            "ItemName": "优惠",
            "ItemUrl": "/list/a646c12-1.html",
            "Title": "星越平价销售13.58万元起",
            "Url": "//www.autohome.com.cn/dealer/201906/367011492.html"
        },
        {
            "ItemName": "优惠",
            "ItemUrl": "/list/a646c12-1.html",
            "Title": "哈弗F5限时优惠8000元",
            "Url": "//www.autohome.com.cn/dealer/201906/366897778.html"
        },
        {
            "ItemName": "优惠",
            "ItemUrl": "/list/a646c12-1.html",
            "Title": "购元新能源价格暂无优惠",
            "Url": "//www.autohome.com.cn/dealer/201906/366897034.html"
        },
        {
            "ItemName": "优惠",
            "ItemUrl": "/list/a646c12-1.html",
            "Title": "瑞虎3xe冰点价促销中!",
            "Url": "//www.autohome.com.cn/dealer/201906/366889724.html"
        },
        {
            "ItemName": "优惠",
            "ItemUrl": "/list/a646c12-1.html",
            "Title": "购奔奔EV现钜惠5.1万元",
            "Url": "//www.autohome.com.cn/dealer/201906/366843204.html"
        },
        {
            "ItemName": "优惠",
            "ItemUrl": "/list/a646c12-1.html",
            "Title": "购宝马7系价格暂无优惠",
            "Url": "//www.autohome.com.cn/dealer/201906/366588080.html"
        },
        {
            "ItemName": "预定",
            "ItemUrl": "/list/a646c14-1.html",
            "Title": "途观L价格直降7.6万元",
            "Url": "//www.autohome.com.cn/dealer/201906/366568937.html"
        },
        {
            "ItemName": "预定",
            "ItemUrl": "/list/a646c14-1.html",
            "Title": "购凯迪拉克XTS降8万",
            "Url": "//www.autohome.com.cn/dealer/201906/366500646.html"
        },
        {
            "ItemName": "预定",
            "ItemUrl": "/list/a646c14-1.html",
            "Title": "汉兰达可试驾购车无优惠",
            "Url": "//www.autohome.com.cn/dealer/201906/366384207.html"
        },
        {
            "ItemName": "预定",
            "ItemUrl": "/list/a646c14-1.html",
            "Title": "宝马M4价格稳定无优惠",
            "Url": "//www.autohome.com.cn/dealer/201906/366156789.html"
        },
        {
            "ItemName": "预定",
            "ItemUrl": "/list/a646c14-1.html",
            "Title": "奥迪A8促销直降26.33万元",
            "Url": "//www.autohome.com.cn/dealer/201906/366925378.html"
        },
        {
            "ItemName": "预定",
            "ItemUrl": "/list/a646c14-1.html",
            "Title": "英菲尼迪Q50L可降6.3万",
            "Url": "//www.autohome.com.cn/dealer/201906/366863516.html"
        },
        {
            "ItemName": "预定",
            "ItemUrl": "/list/a646c14-1.html",
            "Title": "帝豪新能源价格降8.25万",
            "Url": "//www.autohome.com.cn/dealer/201906/366877669.html"
        },
        {
            "ItemName": "预定",
            "ItemUrl": "/list/a646c14-1.html",
            "Title": "撼路者在售现钜惠5万",
            "Url": "//www.autohome.com.cn/dealer/201906/366912121.html"
        }
    ]
}

java json 实体类转 嵌套 json转实体类对象_json_03

提取Result对应的数组

JSONArray jsonArray= jsonObject.getJSONArray("Result");

4、JSONArray提取为JSONObject

eg:

java json 实体类转 嵌套 json转实体类对象_html_04

JSONObject jsonObject = jsonArray.getJSONObject(0);

5、JSONObject获取value

1、object.getString("key")

2、object.get("key")

6、获取JSONObject的ket value

JSONArray dateArr = new JSONArray();
        Set<String> key = dateArr .keySet();
        for (String keyObj:key) {
            JSONArray hisData = history.getJSONArray(keyObj);           
        }

7、遍历JSONArray


第一种for循环


JSONArray seriesArr = new JSONArray();
                for(int i=0;i<seriesArr .size();i++){
                    JSONObject object = eggsArr.getJSONObject(i);
                }


第二种for增强


JSONArray pzListArr = new JSONArray();
                for (Object obj:pzListArr) {
                    JSONObject dataObj = JSONObject.parseObject(obj.toString());
                }

8、Map转为JSON格式的字符串

Map<String, Object> paraMap = new HashMap<String, Object>();

JSONObject.toJSONString(paraMap)

自动过滤参数为null的数值

java json 实体类转 嵌套 json转实体类对象_json_05

  结果:

java json 实体类转 嵌套 json转实体类对象_json_06

8、javaBean转为JSONObject

JSONObject.parseObject(JSONObject.toJSON(javaBean对象).toString());

java json 实体类转 嵌套 json转实体类对象_json_07

9、List<实体类>转String

import com.alibaba.fastjson.JSONObject;
List<实体类> value1 = 。。。。。。
JSONObject.toJSONString(value1 )10、JSONArray转List<实体类>

 

java json 实体类转 嵌套 json转实体类对象_JSON_08

看你开心用哪个,object和array的区别没有细究

10、JSONArray转List<实体类>

import com.alibaba.fastjson.JSONArray;
JSONArray objects = JSONArray.parseArray(categoryConstantInfoFromRedis);
List<实体类> categoryConstantInfos = objects.toJavaList(实体类名.class);


众里寻他千百度!!!toJavaList


java json 实体类转 嵌套 json转实体类对象_html_09

 找不到方法的时候,去看看JSONArray,JSONObject的源码,很多都有封装好的,你不会失望的