天天看點

java的json解析工具_java 寫一個JSON解析的工具類

java的json解析工具_java 寫一個JSON解析的工具類

上面是一個标準的json的響應内容截圖,第一個紅圈”per_page”是一個json對象,我們可以根據”per_page”來找到對應值是3,而第二個紅圈“data”是一個JSON數組,而不是對象,不能直接去拿到裡面值,需要周遊數組。

下面,我們寫一個JSON解析的工具方法類,如果是像第一個紅圈的JSON對象,我們直接傳回對應的值,如果是需要解析類似data數組裡面的json對象的值,這裡我們構造方法預設解析數組第一個元素的内容。

在src/main/java下建立一個包:com.qa.util,然後在新包下建立一個TestUtil.java類。

packagecom.qa.util;importcom.alibaba.fastjson.JSONArray;importcom.alibaba.fastjson.JSONObject;public classTestUtil {

//1 json解析方法

public staticString getValueByJPath(JSONObject responseJson, String jpath) {

Object obj=responseJson;for(String s : jpath.split("/")) {if(!s.isEmpty()) {if(!(s.contains("[") || s.contains("]"))) {

obj=((JSONObject) obj).get(s);

}else if(s.contains("[") || s.contains("]")) {

obj= ((JSONArray)((JSONObject)obj).get(s.split("\\[")[0])).get(Integer.parseInt(s.split("\\[")[1].replaceAll("]", "")));

}

}

}returnobj.toString();

}

}

簡單解釋下上面的代碼,主要是查詢兩種json對象的的值,第一種最簡單的,這個json對象在整個json串的第一層,例如上面截圖中的per_page,這個per_page就是通過jpath這個參數傳入,傳回的結果就是3. 第二種jpath的查詢,例如我想查詢data下第一個使用者資訊裡面的first_name的值,這個時候jpath的寫法就是data[0]/first_name,查詢結果應該是Eve。

======================================================================================

======================================================================================

将接口請求傳回的 response 轉換成 json 格式

public JSONObject getResponseJson (CloseableHttpResponse response) throwsParseException, IOException {

Log.info("得到響應對象的String格式");

String responseString= EntityUtils.toString(response.getEntity(),"UTF-8");

JSONObject responseJson=JSON.parseObject(responseString);

Log.info("傳回響應内容的JSON格式");returnresponseJson;

}

//對象轉換成Json字元串

//Users user = new Users("Anthony","tester");

//String userJsonString = JSON.toJSONString(user);

======================================================================================

======================================================================================

Python 用 json 将 string 、dict 互相轉換

#!/usr/bin/env python#-*- coding: utf-8 -*-

importjson

string_json= "{"\"\"status\": \"error\","\"\"messages\": [\"Could not find resource or operation 'BZK1.MapServer' on the system.\"],"\"\"code\": 404"\"}"

print('對象:' +string_json)print(type(json.loads(string_json)))print('取值:' + json.loads(string_json)['status'])print('取值:' + str(json.loads(string_json)['code']))print('===========================================')

data1= {'b': 789, 'c': 456, 'a': 123}

encode_json=json.dumps(data1)print(type(encode_json))print(encode_json)print('===========================================')

decode_json=json.loads(encode_json)print(type(decode_json))print(decode_json['a'])print(decode_json)

運作的結果如下:

對象:{"status": "error","messages": ["Could not find resource or operation 'BZK1.MapServer' on the system."],"code": 404}取值:error

取值:404

===========================================

{"b": 789, "c": 456, "a": 123}===========================================

123{'b': 789, 'c': 456, 'a': 123}

======================================================================================

======================================================================================

java的json解析工具_java 寫一個JSON解析的工具類

    public static voidmain(String[] args) {

//從字元串解析JSON對象

JSONObject obj = JSON.parseObject("{\"runoob\":\"菜鳥教程\"}");//從字元串解析JSON數組

JSONArray arr = JSON.parseArray("[\"菜鳥教程\",\"RUNOOB\"]\n");//将JSON對象轉化為字元串

String objStr =JSON.toJSONString(obj);//将JSON數組轉化為字元串

String arrStr =JSON.toJSONString(arr);

System.out.println("JSON.parseObject "+obj);

System.out.println("JSON.parseArray "+arr);

System.out.println("JSON.toJSONString "+objStr);

System.out.println("JSON.toJSONString "+arrStr);

}

輸出結果如下:

JSON.parseObject {"runoob":"菜鳥教程"}

JSON.parseArray ["菜鳥教程","RUNOOB"]

JSON.toJSONString {"runoob":"菜鳥教程"}

JSON.toJSONString ["菜鳥教程","RUNOOB"]

從 Java 變量到 JSON 格式的編碼過程如下:

public voidtestJson() {

JSONObject object= newJSONObject();//string

object.put("string","string");//int

object.put("int",2);//boolean

object.put("boolean",true);//array

List integers = Arrays.asList(1,2,3);

object.put("list",integers);//null

object.put("null",null);

System.out.println(object);

}

在上例中,首先建立一個 JSON 對象,然後依次添加字元串、整數、布爾值以及數組,最後将其列印為字元串。

輸出結果如下:

{"boolean":true,"string":"string","list":[1,2,3],"int":2}