日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

java json帮助类_java 写一个JSON解析的工具类

發(fā)布時(shí)間:2023/12/1 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java json帮助类_java 写一个JSON解析的工具类 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

上面是一個(gè)標(biāo)準(zhǔn)的json的響應(yīng)內(nèi)容截圖,第一個(gè)紅圈”per_page”是一個(gè)json對(duì)象,我們可以根據(jù)”per_page”來(lái)找到對(duì)應(yīng)值是3,而第二個(gè)紅圈“data”是一個(gè)JSON數(shù)組,而不是對(duì)象,不能直接去拿到里面值,需要遍歷數(shù)組。

下面,我們寫(xiě)一個(gè)JSON解析的工具方法類,如果是像第一個(gè)紅圈的JSON對(duì)象,我們直接返回對(duì)應(yīng)的值,如果是需要解析類似data數(shù)組里面的json對(duì)象的值,這里我們構(gòu)造方法默認(rèn)解析數(shù)組第一個(gè)元素的內(nèi)容。

在src/main/java下新建一個(gè)包:com.qa.util,然后在新包下創(chuàng)建一個(gè)TestUtil.java類。

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

*@paramresponseJson ,這個(gè)變量是拿到響應(yīng)字符串通過(guò)json轉(zhuǎn)換成json對(duì)象

*@paramjpath,這個(gè)jpath指的是用戶想要查詢json對(duì)象的值的路徑寫(xiě)法

* jpath寫(xiě)法舉例:1) per_page 2) data[1]/first_name ,data是一個(gè)json數(shù)組,[1]表示索引

* /first_name 表示data數(shù)組下某一個(gè)元素下的json對(duì)象的名稱為first_name

*@return, 返回first_name這個(gè)json對(duì)象名稱對(duì)應(yīng)的值*/

//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();

}

}

簡(jiǎn)單解釋下上面的代碼,主要是查詢兩種json對(duì)象的的值,第一種最簡(jiǎn)單的,這個(gè)json對(duì)象在整個(gè)json串的第一層,例如上面截圖中的per_page,這個(gè)per_page就是通過(guò)jpath這個(gè)參數(shù)傳入,返回的結(jié)果就是3. 第二種jpath的查詢,例如我想查詢data下第一個(gè)用戶信息里面的first_name的值,這個(gè)時(shí)候jpath的寫(xiě)法就是data[0]/first_name,查詢結(jié)果應(yīng)該是Eve。

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

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

將接口請(qǐng)求返回的 response 轉(zhuǎn)換成 json 格式

/***

*@paramresponse, 任何請(qǐng)求返回返回的響應(yīng)對(duì)象

*@return, 返回響應(yīng)體的json格式對(duì)象,方便接下來(lái)對(duì)JSON對(duì)象內(nèi)容解析

* 接下來(lái),一般會(huì)繼續(xù)調(diào)用TestUtil類下的json解析方法得到某一個(gè)json對(duì)象的值

*@throwsParseException

*@throwsIOException*/

public JSONObject getResponseJson (CloseableHttpResponse response) throwsParseException, IOException {

Log.info("得到響應(yīng)對(duì)象的String格式");

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

JSONObject responseJson=JSON.parseObject(responseString);

Log.info("返回響應(yīng)內(nèi)容的JSON格式");returnresponseJson;

}

//對(duì)象轉(zhuǎn)換成Json字符串

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

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

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

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

Python 用 json 將 string 、dict 互相轉(zhuǎn)換

#!/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('對(duì)象:' +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)

運(yùn)行的結(jié)果如下:

對(duì)象:{"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}

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

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

? ??public static voidmain(String[] args) {

//從字符串解析JSON對(duì)象

JSONObject obj = JSON.parseObject("{\"runoob\":\"菜鳥(niǎo)教程\"}");//從字符串解析JSON數(shù)組

JSONArray arr = JSON.parseArray("[\"菜鳥(niǎo)教程\",\"RUNOOB\"]\n");//將JSON對(duì)象轉(zhuǎn)化為字符串

String objStr =JSON.toJSONString(obj);//將JSON數(shù)組轉(zhuǎn)化為字符串

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);

}

輸出結(jié)果如下:

JSON.parseObject {"runoob":"菜鳥(niǎo)教程"}

JSON.parseArray ["菜鳥(niǎo)教程","RUNOOB"]

JSON.toJSONString {"runoob":"菜鳥(niǎo)教程"}

JSON.toJSONString ["菜鳥(niǎo)教程","RUNOOB"]

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

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);

}

在上例中,首先建立一個(gè) JSON 對(duì)象,然后依次添加字符串、整數(shù)、布爾值以及數(shù)組,最后將其打印為字符串。

輸出結(jié)果如下:

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

總結(jié)

以上是生活随笔為你收集整理的java json帮助类_java 写一个JSON解析的工具类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。