3、解析複雜Json進階
場景一
沒有頭的Json陣列
“e:/person”檔案內容如下,檔案中是沒有頭的json陣列
[
{
"id" : 1,
"name" : "lzj",
"age" : 27
},
{
"id" : 2,
"name" : "Bob",
"age" : 20
},
{
"id" : 3,
"name" : "Terry",
"age" : 26
}
]
/*也可用JsonReader來實現*/
@Test
public void test1() throws FileNotFoundException{
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
FileReader fileReader = new FileReader("e:/person");
JsonParser parser = new JsonParser();
JsonElement jsonElement = parser.parse(fileReader);
JsonArray asJsonArray = jsonElement.getAsJsonArray();
List<Person> persons = new ArrayList<Person>();
/*JsonArray繼承自JsonElement,JsonArray是JsonElement陣列形式*/
for(JsonElement elment : asJsonArray){
Person person = gson.fromJson(elment, Person.class);
persons.add(person);
}
System.out.println(persons);
}
執行程式,輸出如下:
[Person [id=1 , name=lzj, age=27], Person [id=2, name=Bob, age=20], Person [id=3, name=Terry, age=26]]
場景二
有頭的Json陣列
“e:/person1”檔案中json字串內容如下:
{
"persons" :[
{
"id" : 1,
"name" : "lzj",
"age" : 27
},
{
"id" : 2,
"name" : "Bob",
"age" : 20
},
{
"id" : 3,
"name" : "Terry",
"age" : 26
}
]
}
@Test
public void test2() throws FileNotFoundException{
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
FileReader fileReader = new FileReader("e:/person1");
JsonParser parser = new JsonParser();
JsonElement jsonElement = parser.parse(fileReader);
JsonObject jsonObject = jsonElement.getAsJsonObject();
JsonArray jsonArray = jsonObject.getAsJsonArray("persons");
List<Person> persons = new ArrayList<Person>();
for(JsonElement elment : jsonArray){
Person person = gson.fromJson(elment, Person.class);
persons.add(person);
}
System.out.println(persons);
}
執行程式,輸出如下
[Person [id=1, name=lzj, age=27], Person [id=2, name=Bob, age=20], Person [id=3, name=Terry, age=26]]
場景三
Json陣列外含有其他Json字串
“e:/person2”檔案中字串如下
{
"code" : 200,
"persons" :[
{
"id" : 1,
"name" : "lzj",
"age" : 27
},
{
"id" : 2,
"name" : "Bob",
"age" : 20
},
{
"id" : 3,
"name" : "Terry",
"age" : 26
}
]
}
@Test
public void test3() throws FileNotFoundException{
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
FileReader fileReader = new FileReader("e:/person2");
Persons persons = gson.fromJson(fileReader, Persons.class);
System.out.println(persons.getPersons());
}
執行程式,輸出內容如下:
[Person [id=1, name=lzj, age=27], Person [id=2, name=Bob, age=20], Person [id=3, name=Terry, age=26]]
也可以用上一示例的方法進行解決,只是去獲取“persons”中的內容就可以了。場景二中的程式碼只需要把讀取的檔案修改為“e:/person2”,拿過來可以直接使用。
附:
public class Person {
private int id;
private String name;
private int age;
/*省略set/get/toString方法*/
}
public class Persons {
private String code;
private List<Person> persons;
/*省略set/get/toString方法*/
}
相關推薦
3、解析複雜Json進階
場景一 沒有頭的Json陣列 “e:/person”檔案內容如下,檔案中是沒有頭的json陣列 [ { "id" : 1, "name" : "lzj", "age" : 27 },
Python開發基礎----反射、面向對象進階
elf bob 是否 pro sat 自己的 代碼 改變 數據類型 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)檢查是否obj是否是類 cls 的對象,如果是返回True 1 class Foo
Ubuntu分區方案(菜鳥方案、常用方案和進階方案)
變化 格式化 執行 菜鳥 格式 分開 清理 知識庫 重新 菜鳥方案 “/”與swap兩個分區就可以應付絕大多數的應用 常用方案 分為3個區 1. 掛載點/;主分區;安裝系統和軟件;大小為30G;分區格式為ext4; 2. 掛載點/home;邏輯分區;相當於“我的文檔”;大小
5.1.3 網絡編程進階---查看進程ID和父進程ID
父進程 elf pycharm __init__ div run 網絡編程 %s 輸出 獲取本進程id: os.getpid() 獲取父進程id: os.getppid() from multiprocessing import Process import ti
2.3.10 Python 函數進階
臨時 名稱空間 函數定義 綁定 說明 查看 模塊 () globals 名稱空間 又名 name space。 說明:若變量 x=1, 1存放於內存中,那名字x存放在哪裏? 名稱空間正是存放名字x與1綁定關系的地方 名稱空間共三種: locals
Android Retrofit2框架的使用,以及解析複雜Json(其實也不算太複雜)
Retrofit是Square公司的開源專案,是基於OKHttp進行的應用層封裝 Retrofit官方文件:http://square.github.io/retrofit/ Retrofit GitHub地址:https://github.com/square/retro
3、SpringBoot 返回JSON資料格式
SpringBoot 返回 JSON 資料格式 github原始碼 方式一:使用自帶的 jackson 將 Controller 層的 @Controller 註解替換成 @RestController 即可 方式二:完美使用 FastJson pom 引入依賴:
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",
java解析複雜json資料
java如何解析複雜的json資料 關於json處理的包有好幾個,比如jackson、Gson、Fastjson。Gson是谷歌做的,功能強大;Fastjson是阿里巴巴做的,效能更快。具體用哪個,開心就好。我這裡兩個都沒用,用的是java的一個類庫—json-
Ubuntu分割槽方案(菜鳥方案、常用方案和進階方案)
轉自https://blog.csdn.net/Alvern_Zhang/article/details/48392895 菜鳥方案 “/”與swap兩個分割槽就可以應付絕大多數的應用 常用方案 分為3個區 1. 掛載點/;主分割槽;安裝系統和軟體;大小為30G;分割槽格式為ex
約瑟夫問題,從o(n*m)到o(n)乃至o(m)的演算法複雜度進階
問題描述: n個人(編號1~n),從1開始報數,報到m的退出,剩下的人繼續從1開始報數。按順序輸出列者編號。 1.演算法複雜度為o(n*m) 使用連結串列進行模擬整個遊戲過程 2.演算法複雜度為o(n) 將n個人按照從0~n進行編號,出列的第一個人編號是m%n-1,將
通過GSON解析複雜json資料(二)
這裡我們依舊用上文中的 json 字串 , 由於轉換為 map 依舊需要 javaBean , 所有我們的實體物件也不發生改變 這裡我們需要活用 java 反射和型別對比實現需求 先看程式碼 package com.jacx.test.test01.
java解析複雜json:JSONObject 和 JSONArray的使用
在正式解析之前,我們需要下載解析Json所需要的jar包,一共有7個。下載地址如下:https://download.csdn.net/download/zai_xia/10374080大家也可以自行找資源下載。然後將這些Jar包 Build Path 進專案就好了。特別注意
Gson 解析複雜json字串
對Gson不瞭解的同學可以先去了解下Gson的基本用法 需要解析的Json字串如下: {"data":{"data":[{"id":"310000","indexId":"01","provinceName":"上海"},{"id":"320000","index
二、Linux——基本命令進階
【1】使用者管理 sudo adduser u1 //新增使用者 sudo deluser --remove-name u1 //刪除使用者 sudo user
JAVA-使用FastJson解析複雜JSON資料
FastJson解析JSON的核心就是把json資料直接轉換成物件,讓解析複雜的json資料變得非常簡單,較大的降低了出錯的可能性。 使用方法: 1.建立JSON資料物件,所有的json鍵值都使用key作為變數名,並且實現set,get函式。 下面試簡單的demo測試複雜的
鄒博機器學習演算法最新版( 吳恩達前輩、唐宇迪老師、張志華老師多家對比,入門最優 ) --- 獻給想要入門、或者想要進階的朋友
慌慌張張,匆匆忙忙,生活本來就是這樣 很喜歡郝雲的《活著》這首歌,很生動的描述了現代年輕上班族的生活。 時光飛逝,從開始接觸機器學習 已經一年多了,現已成功從安卓移動端轉戰機器學習 現在也如願從事機器學習的工作,雖初出茅廬,卻也拿到了比較滿意的25+ 想起當
一、web專案開發進階之分模組管理專案之通用模組
以前的web專案都是統一一個工程,其他人員在這個專案拉取分支進行開發,但是若需要多個人協作同時進行開發時,會造成各種各樣的問題。為了解決這些問題,按照業務邏輯進行區分,將一個專案按照多個模組進行構建。 (一)所有專案的父模組“parent” 父模組的
java使用jackson解析複雜json字串
為什麼要用 jackson jackson 憑藉其簡潔的語法、高效的處理速度、豐富的功能、清晰的文件等眾多優勢,受到廣大開發者的熱愛,成為了java程式設計師處理json資料的不二選擇。 1 實戰需求 在電商專案中,訂單物流查詢模組,需要接入多方快遞 API