第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用 Jackson 解析深度嵌套的 JSON 屬性

使用 Jackson 解析深度嵌套的 JSON 屬性

翻過(guò)高山走不出你 2023-08-04 15:16:45
我正在嘗試找到一種干凈的方法來(lái)解析API.以下是有效負(fù)載的粗略概括JSON:{  "root": {    "data": {      "value": [        {          "user": {            "id": "1",            "name": {              "first": "x",              "last": "y"            }          }        }      ]    }  }}我的目標(biāo)是擁有一組User具有firstName和lastName字段的對(duì)象。有誰(shuí)知道一個(gè)干凈地解析這個(gè)的好方法嗎?現(xiàn)在我正在嘗試創(chuàng)建一個(gè)Wrapper類(lèi),并在其中包含用于數(shù)據(jù)、值、用戶等的靜態(tài)內(nèi)部類(lèi),但這似乎是一種混亂的方式,只是為了讀取第一個(gè)/最后一個(gè)屬性的數(shù)組。我用來(lái)restTemplate.exchange()調(diào)用端點(diǎn)。
查看完整描述

2 回答

?
楊__羊羊

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊

JsonPath庫(kù)允許您僅選擇必需的字段,然后您可以使用它將Jackson原始數(shù)據(jù)轉(zhuǎn)換為POJO類(lèi)。示例解決方案如下所示:

import com.fasterxml.jackson.annotation.JsonProperty;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.fasterxml.jackson.databind.type.CollectionType;

import com.jayway.jsonpath.JsonPath;


import java.io.File;

import java.util.List;

import java.util.Map;


public class JsonPathApp {


? ? public static void main(String[] args) throws Exception {

? ? ? ? File jsonFile = new File("./resource/test.json").getAbsoluteFile();


? ? ? ? List<Map> nodes = JsonPath.parse(jsonFile).read("$..value[*].user.name");


? ? ? ? ObjectMapper mapper = new ObjectMapper();

? ? ? ? CollectionType usersType = mapper.getTypeFactory().constructCollectionType(List.class, User.class);

? ? ? ? List<User> users = mapper.convertValue(nodes, usersType);

? ? ? ? System.out.println(users);

? ? }

}


class User {


? ? @JsonProperty("first")

? ? private String firstName;


? ? @JsonProperty("last")

? ? private String lastName;


? ? public String getFirstName() {

? ? ? ? return firstName;

? ? }


? ? public void setFirstName(String firstName) {

? ? ? ? this.firstName = firstName;

? ? }


? ? public String getLastName() {

? ? ? ? return lastName;

? ? }


? ? public void setLastName(String lastName) {

? ? ? ? this.lastName = lastName;

? ? }


? ? @Override

? ? public String toString() {

? ? ? ? return "User{" +

? ? ? ? ? ? ? ? "firstName='" + firstName + '\'' +

? ? ? ? ? ? ? ? ", lastName='" + lastName + '\'' +

? ? ? ? ? ? ? ? '}';

? ? }

}

上面的代碼打?。?/p>


[User{firstName='x', lastName='y'}]


查看完整回答
反對(duì) 回復(fù) 2023-08-04
?
慕斯709654

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊

另一種簡(jiǎn)單的方法是使用JSON.simple庫(kù):


JSONParser jsonParser = new JSONParser();

? ? ? ? //Read JSON file

? ? ? ? Object obj = jsonParser.parse(reader);


? ? ? ? JSONObject jObj = (JSONObject) obj;


? ? ? ? JSONObject root = (JSONObject)jObj.get("root");

? ? ? ? JSONObject data = (JSONObject) root.get("data");

? ? ? ? JSONArray value =? (JSONArray) data.get("value");

? ? ? ? JSONObject array = (JSONObject) value.get(0);

? ? ? ? JSONObject user = (JSONObject) array.get("user");

? ? ? ? JSONObject name = (JSONObject) user.get("name");


? ? ? ? String lastName = (String) name.get("last");

? ? ? ? String firstName = (String) name.get("first");


? ? ? ? System.out.println(lastName + " " + firstName);


查看完整回答
反對(duì) 回復(fù) 2023-08-04
  • 2 回答
  • 0 關(guān)注
  • 280 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)