JSON看这个

文章目录


JSON转换

1、JSONObject与JSON的区别

JSONObject是JSON的子类。JSON是一个抽象类,JSON中有一个静态方法parseObject(String text),将text解析为一个JSONObject对象并返回;JSONObject是一个继承自JSON的类,当调用JSONObject.parseObject(result)时,会直接调用父类的parseObject(String text)。所以两者没什么区别,一个是用父类去调用父类自己的静态的parseObject(String text),一个是用子类去调用父类的静态parseObject(String text),两者调的是同一个方法。

parseObject()和parse()的区别

类型不同:parse方法返回基本数据类型,如int、double等;而parseObject方法返回包装类类型,如Integer、Double等。
异常处理:当parse方法无法解析输入的字符串时,会抛出NumberFormatException异常;而parseObject方法不会抛出异常,而是返回一个null值。

2、通过HttpservletRequest接收json数据

		public String intercept(ActionInvocation invocation) throws Exception {
 
		HttpServletRequest request = ServletActionContext.getRequest();	  
        接收json数据
        BufferedReader streamReader = new BufferedReader( new 
        InputStreamReader(request.getInputStream(), "UTF-8"));
        StringBuilder responseStrBuilder = new StringBuilder();
        String inputStr;
        while ((inputStr = streamReader.readLine()) != null)
             responseStrBuilder.append(inputStr);
        转化成json对象
        JSONObject jsonObject = JSONObject.fromObject(responseStrBuilder.toString());
        获取其中的对象
        JSONObject commonRequest=jsonObject.getJSONObject("commonRequest");
        获取对象中的字段
        String accessKey=commonRequest.getString("accessKey");
        获取其中的list数据
        List custList=(List) jsonObject.get("custList");
        获取的是字符串
        String  couponGroupId=jsonObject.getString("couponGroupId");
}

这是传的json数据 
{
    "commonRequest": {
    "accessKey": "1", 
    "tradeNo": "00010", 
    "tradeTime": "111111111", 
    "tradeMask": "7DC506B55F91677BE93A477D6EFF6C87"
    },
    "couponGroupId": "11", 
    "custList": [
        {
            "mobile": "15049995864", 
            "name": "zzz",
            "gender": "1", 
            "birthday": "2019-07-04", 
            "address": "zzzzzz",
            "areaCode": "1"
        }
    ]  
}

3、获取JSON数组中指定索引位置上的元素

JSONObject jsonObj = jsonArray.getJSONObject(0);

4、Java对象–>JSON对象

JSONObject jsonObject = (JSONObject) JSONObject.toJSON(stu);

5、JSON对象–>JSON字符串

String jsonString = jsonObject.toJSONString();

6、JSON字符串–>JSON对象 (常用)
注意导入不同jar包,解析方法不一样

JSONObject jsonObject1 = JSONObject.parseObject(stuString);
JSONObject billjson = new JSONObject().fromObject(sendjson);

7、JSON对象转换成Java对象

JSONObject jsonObject = (JSONObject) JSONObject.toJSON(stu);   
  
 //JSON对象转换成Java对象 
 Student student = JSONObject.toJavaObject(jsonObject, Student.class);

8、JSON字符串转换成Java对象

Student student1 = JSONObject.parseObject(stuString, Student.class);

9、JSONArray对象–>JSONArray字符串–>List

//初始化JSONArray对象
JSONArray jsonArray = JSONArray.parseArray("[{\"name\":\"zhangsan\",\"age\":18},{\"name\":\"lisi\",\"age\":23}]");

//转字符串,再转List
List<Body> list = JSONArray.parseArray(jsonArray.toJSONString(), Body.class);

10、JSONArray字符串–>JSONArray数组对象(遍历)–>JSON对象

String s = "[{\"id\":\"17051801\",\"name\":\"lucy\"},{\"id\":\"17051802\",\"name\":\"peter\"}]";
 
 //数组 --> json数组       
JSONArray array = JSONObject.parseArray(s);
    for (int i = 0; i < array.size(); i++) {
           //JSONArray中的数据转换为String类型需要在外边加"";不然会报出类型强转异常!
           String str = array.get(i)+"";
           JSONObject object = JSON.parseObject(str);