[英]How to recursively parse json value in ObjectMapper.readValue?
我正在嘗試使用Jackson ObjectMapper將json字符串中的json字符串解析為Object。 但我找不到干凈的方法來做到這一點。
我有一個SQL表存儲列表作為json字符串,如"[1,2,3]"
。 然后我將所有列讀入Map中,然后嘗試使用objectMapper.convertValue
生成Java對象。
所以這是一個重新創建問題的快速片段。 請注意我不控制在實際代碼中如何生成Map。
@Data
public class Main {
private List<Integer> bar;
public static void main(String[] args) throws Exception{
ObjectMapper objectMapper = new ObjectMapper();
Map<String, Object> objectMap = new HashMap<String, Object>();
objectMap.put("bar", "[1,2,3]");
// Main foo = objectMapper.convertValue(objectMap, Main.class)
String json = objectMapper.writeValueAsString(objectMap);
Main foo = objectMapper.readValue(json, Main.class);
System.out.println(foo.getBar());
}
}
但這不對。 ObjectMapper嘗試直接將String轉換為List而不是解析字符串。 我希望foo.getBar()返回一個包含3個元素的List,但代碼在轉換階段已經失敗了。
您應該將"[1,2,3]"
設為String[]
這樣:
"[1,2,3]".replaceAll("\\[", "").replaceAll("\\]", "").replaceAll("\\s", "").split(",")
就像是:
public static void main(String[] args) throws Exception {
ObjectMapper objectMapper = new ObjectMapper();
Map<String, Object> objectMap = new HashMap<String, Object>(){{
put("bar", "[1,2,3]".replaceAll("\\[", "")
.replaceAll("]", "")
.replaceAll("\\s", "").split(","));
}};
String json = objectMapper.writeValueAsString(objectMap);
Main foo = objectMapper.readValue(json, Main.class);
System.out.println(foo.getBar());
}
你需要將"[1,2,3]"
替換為你得到的東西。
注意:不確定應用程序邏輯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.