Gson 解析複雜json字串
對Gson不瞭解的同學可以先去了解下Gson的基本用法
需要解析的Json字串如下: {"data":{"data":[{"id":"310000","indexId":"01","provinceName":"上海"},{"id":"320000","indexId":"02","provinceName":"江蘇省"}]},"result":"ok"}
先貼上解析json字串的程式碼:
public ResponseData<Province_net> providerNetProviceListData(String result) { ResponseData<Province_net> responseData = new ResponseData<Province_net>(); ResponseEntity<Province_net> responseEntity = new ResponseEntity<Province_net>(); Gson gson = new Gson(); BaseNetData<BaseNetProvincesList<Province_net>> baseNetData = gson.fromJson( result, new TypeToken<BaseNetData<BaseNetProvincesList<Province_net>>>() { }.getType()); String resultCode = baseNetData.getResult(); if (null != resultCode && !TextUtils.isEmpty(resultCode)) { if (resultCode.equalsIgnoreCase("ok")) { responseData.setStatusCode(ResponseData.STATUS_CODE_SUCCESS); responseEntity.setSuccessList(baseNetData.getData().getData()); responseData.setResponseEntity(responseEntity); } // redscs else if (resultCode.equals("NO_DATA")) { responseData.setStatusCode(ResponseData.STATUS_CODE_FAILURE); responseEntity.setFailureMsg("沒有資料"); responseData.setResponseEntity(responseEntity); } else if (resultCode.equalsIgnoreCase("EXCEPTION")) { responseData.setStatusCode(ResponseData.STATUS_CODE_FAILURE); responseEntity.setFailureMsg("伺服器端異常"); responseData.setResponseEntity(responseEntity); } else if (resultCode.equalsIgnoreCase(INVALID_TOKEN)) { responseData.setStatusCode(ResponseData.STATUS_CODE_FAILURE); responseEntity.setFailureMsg(INVALID_TOKEN); responseData.setResponseEntity(responseEntity); } else { responseData.setStatusCode(ResponseData.STATUS_CODE_FAILURE); responseEntity.setFailureMsg("未知錯誤"); responseData.setResponseEntity(responseEntity); } } else { responseData.setStatusCode(ResponseData.STATUS_CODE_FAILURE); responseEntity.setFailureMsg("獲取資料異常"); responseData.setResponseEntity(responseEntity); } return responseData; }
首先我們定義了一個數據bean用來裝載Gson解析出來的資料:
public class ResponseData<T> { public static final int STATUS_CODE_SUCCESS = STATUS_CODE_BEGIN + 1; public static final int STATUS_CODE_FAILURE = STATUS_CODE_BEGIN + 2; private int statusCode; private ResponseEntity<T> responseEntity; public int getStatusCode() { return statusCode; } public void setStatusCode(int statusCode) { this.statusCode = statusCode; } public ResponseEntity<T> getResponseEntity() { return responseEntity; } public void setResponseEntity(ResponseEntity<T> responseEntity) { this.responseEntity = responseEntity; } }
此類將所有的返回分成返回碼statusCode和返回的實體responseEntity兩個部分。
然後定義了一個針對上述基本bean的實體的bean,
public class ResponseEntity<T> { private String failureMsg; private T successEntity; private int totalCount; private List<T> successList; public String getFailureMsg() { return failureMsg; } public void setFailureMsg(String failureMsg) { this.failureMsg = failureMsg; } public T getSuccessEntity() { return successEntity; } public void setSuccessEntity(T successEntity) { this.successEntity = successEntity; } public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { this.totalCount = totalCount; } public List<T> getSuccessList() { return successList; } public void setSuccessList(List<T> successList) { this.successList = successList; } }
這個bean中有四個屬性,分別為:當返回的資料格式為json物件的時候的successEntity ,錯誤資訊failureMsg,返回資料格式為jsonArray的successList 以及jsonArray的長度。
下面針對具體的返回定義了一個基礎Bean:
public class BaseNetData<T> {
private String result;
private T data;
public String getResult() {
return result;
}
public T getData() {
return data;
}
public void setResult(String result) {
this.result = result;
}
public void setData(T data) {
this.data = data;
}
}
針對{"data":{"data":[{"id":"310000","indexId":"01","provinceName":"上海"},{"id":"320000","indexId":"02","provinceName":"江蘇省"}]},"result":"ok"} 。 此類中的result屬性對應json字串中的“result”, data對應著“data” 。(一定保證欄位名字的一致)。
然後對於{"data":[{"id":"310000","indexId":"01","provinceName":"上海"},{"id":"320000","indexId":"02","provinceName":"江蘇省"}]} ,使用如下:
public class BaseNetListData<T> {
private int total;
private List<T> data;
public int getTotal() {
return total;
}
public List<T> getData() {
return data;
}
public void setTotal(int total) {
this.total = total;
}
public void setData(List<T> data) {
this.data = data;
}
}
如果返回不是jsonArray而是jsonObject,則
public class BaseNetEntityData<T> {
private T data;
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
通過以上的封裝我們可以根據伺服器的返回型別來調整自己的資料bean,從而實現程式碼的複用。。。。。。
相關推薦
Gson 解析複雜json字串
對Gson不瞭解的同學可以先去了解下Gson的基本用法 需要解析的Json字串如下: {"data":{"data":[{"id":"310000","indexId":"01","provinceName":"上海"},{"id":"320000","index
Gson解析複雜JSON字串的兩種方式
JSONObject(源自Android官方)、 Gson(源自Google)、 Jackson(第三方開源庫)、 FastJSON(第三方開源庫)、 本文例子使用Google提供的Gson。 什麼是JavaBean JavaBean實際上是一種特殊的Java類,是一種規範,經常用於封裝資料。Ja
python解析複雜json字串
因為專案需要,公司領導對提出了介面測試的要求,因此作為一個測試人員,我第一時間就想到了jmeter這個利器,前面文章也有說明過怎麼用jmeter做http協議的介面測試,這裡我不再做講解,此篇主要講解如何用python做介面測試,並解析返回結果。 (注意:介面的返回格式是json格式) 一、pytho
Gson解析複雜Json資料
implementation'com.google.code.gson:gson:2.8.0' 然後根據api獲取到的json資料 { "status": "1", "info": "OK", "infocode": "10000",
通過GSON解析複雜json資料(二)
這裡我們依舊用上文中的 json 字串 , 由於轉換為 map 依舊需要 javaBean , 所有我們的實體物件也不發生改變 這裡我們需要活用 java 反射和型別對比實現需求 先看程式碼 package com.jacx.test.test01.
java使用jackson解析複雜json字串
為什麼要用 jackson jackson 憑藉其簡潔的語法、高效的處理速度、豐富的功能、清晰的文件等眾多優勢,受到廣大開發者的熱愛,成為了java程式設計師處理json資料的不二選擇。 1 實戰需求 在電商專案中,訂單物流查詢模組,需要接入多方快遞 API
用Gson解析複雜的Json字串
前提:自行將Gson開源庫匯入到工程中(不會的,請自行百度)。 這是本人第一次寫部落格,如有錯誤,請您見諒,也歡迎與我交流! 需要解析的Json字串為: { "error_code": 0, "reason"
使用Gson解析複雜的json資料
我們app介面資料返回通常是以下格式: {“code”:“0000”,“data”: {“code”:“0002”,“resultData”:null,“resultMsg”:“使用者Token過期,請重新登入”,“error”:[],“msg”:""} 把以上的json資料放線上J
GSON解析複雜的JSON陣列
1.GSON的兩個重要方法 在GSON的API中,提供了兩個重要的方法:toJson()和fromJson()方法。其中,toJson()方法用來實現將Java物件轉換為相應的JSON資料,fromJson()方法則用來實現將JSON資料轉換為相應的Jav
使用Gson解析複雜的json陣列
前端使用Ajax傳值到後端 程式碼示例如下: var postData = []; var json1 = {"a":"a","b":"b"}; var jsonArray = [{"id":"a","name":"zrxJuly"},{"id":"b","name":"Anna
Android:使用Gson解析複雜的JSON資料
JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式,目前廣泛使用。本文主要講解android如何解析複雜格式的JSON資料,適合android初學者和初步接觸JSON的人。 1.JSON相關介紹: 首先了解一下JSO
使用GSON解析複雜的JSON資料(有DEMO)
Gson(又稱Google Gson)是Google公司釋出的一個開放原始碼的Java庫,使用它我們可以很方便的解析JSON資料,把JSON據輸出填充到對應得物件內,然後通過物件去呼叫我們解析到的資料。 例如我們要
使用GSON解析複雜資料——天氣資訊
最近在做自己的App時,要在主介面上新增簡單的天氣資訊顯示,然後就理所當然的跑到百度查詢如何才能獲取到天氣資訊,最後決定採用第三方天氣資訊服務商提供的資料,在看第三方提供的API說明時發現,獲取到的天氣資料是Json格式的,需要自己解析。又是經過一番百度,最後確定使用Google
Android Retrofit2框架的使用,以及解析複雜Json(其實也不算太複雜)
Retrofit是Square公司的開源專案,是基於OKHttp進行的應用層封裝 Retrofit官方文件:http://square.github.io/retrofit/ Retrofit GitHub地址:https://github.com/square/retro
java解析複雜json資料
java如何解析複雜的json資料 關於json處理的包有好幾個,比如jackson、Gson、Fastjson。Gson是谷歌做的,功能強大;Fastjson是阿里巴巴做的,效能更快。具體用哪個,開心就好。我這裡兩個都沒用,用的是java的一個類庫—json-
java解析複雜json:JSONObject 和 JSONArray的使用
在正式解析之前,我們需要下載解析Json所需要的jar包,一共有7個。下載地址如下:https://download.csdn.net/download/zai_xia/10374080大家也可以自行找資源下載。然後將這些Jar包 Build Path 進專案就好了。特別注意
java遍歷複雜json字串獲取想要的資料
https://blog.csdn.net/qq_34309663/article/details/80508125 java如何解析複雜的json資料關於json處理的包有好幾個,比如jackson、Gson、Fastjson。Gson是谷歌做的,功能強大;Fastjson
使用Gson解析複雜的泛型巢狀泛型資料結構
一、Gson Gson是由Google自家出來的Json解析庫,使用起來相容性方面當然會有很多優勢,而且解析Json資料也很方便,掌握了Gson的一些基本使用之後就可以使用它解析很多複雜的Json資料了。但當我們要解析一個複雜的資料結構時,比如說List<
3、解析複雜Json進階
場景一 沒有頭的Json陣列 “e:/person”檔案內容如下,檔案中是沒有頭的json陣列 [ { "id" : 1, "name" : "lzj", "age" : 27 },
JAVA-使用FastJson解析複雜JSON資料
FastJson解析JSON的核心就是把json資料直接轉換成物件,讓解析複雜的json資料變得非常簡單,較大的降低了出錯的可能性。 使用方法: 1.建立JSON資料物件,所有的json鍵值都使用key作為變數名,並且實現set,get函式。 下面試簡單的demo測試複雜的