[英]json parsing to pojo for a variable which is an Object or two Object using jackson
如何將 json 解析為 pojo 以獲取 java 中的動態屬性變量。
Rest api 返回數據:
"db": {
"queryA": {
"name": "A",
"age": "12",
"startDT": "202102030800"
}
}
或者有時
"db":{
"queryA":
{
"name": "A",
"age": "12",
"startDT": "202102030800"
},
"queryB":
{
"name": "B",
"age": "20",
"startDT": "202102030800"
}
}
有時查詢是 Object,有時是兩個 Object。
如何將 map 這個動態查詢變成 java Pojo class。
class Student{
private Query query;
}
您需要將“db”屬性視為 Map。 查詢,例如'queryA'、'queryB'、...等將是鍵,它們對應的對象是它們的值。 請參考以下示例:
文件 A JSON(第一個示例 JSON 提供):
{
"db": {
"queryA": {
"name": "A",
"age": "12",
"startDT": "202102030800"
}
}
}
文件B JSON(提供的第二個示例 JSON)
{
"db":{
"queryA":
{
"name": "A",
"age": "12",
"startDT": "202102030800"
},
"queryB":
{
"name": "B",
"age": "20",
"startDT": "202102030800"
}
}
}
數據(反序列化)類"
package org.test.json;
import java.util.HashMap;
public class DataClass {
protected HashMap<String, Object> db;
public HashMap<String, Object> getDb() {return db;}
public void setDb(HashMap<String, Object> db) {this.db = db;}
}//calss closing
Jackson反序列化代碼:
package org.test.json;
import java.io.FileInputStream;
import com.fasterxml.jackson.databind.ObjectMapper;
public class VariableLengthAttrToMap {
public static void main(String[] args) throws Exception{
String jsonFilePath="D:\\workspaces\\mtplatform\\TechTest\\testfiles\\fileB.json";
FileInputStream fis=new FileInputStream(jsonFilePath);
ObjectMapper mapper=new ObjectMapper();
System.out.println(mapper.readValue(fis, DataClass.class).getDb());
fis.close();
}//main closing
}//class closing
fileA 作為輸入的結果是
{queryA={name=A, age=12, startDT=202102030800}}
fileB 作為輸入的結果是
{queryA={name=A, age=12, startDT=202102030800}, queryB={name=B, age=20, startDT=202102030800}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.