-1
的名單上有以下格式的JSON:JsonNode轉換JSON字符串
{
"success": 1,
"value": "[\"1-1\",\"1-2\",\"1-3\"]"
}
的成功實際上是int
和值是String
一個List
,我希望得到值和把這些元素放入List<String>
。串的名單將是:
1-1
1-2
1-3
我其實是想解析使用JsonNode整個JSON,但限制了我這樣做的問題是:
"[\"1-1\",\"1-2\",\"1-3\"]"
是包裹着雙引號,所以它 可能被視爲字符串。- 有串
下在擺脫反斜槓的是我的解決方法,我試過了,沒有任何高雅/更好(這是一個沒有正則表達式更好,只是解析整個JSON到JsonNode)的方式來這樣做?
ObjectMapper mapper= new ObjectMapper();
JsonNode response = mapper.readTree(payload); //payload is the json string
JsonNode success = response.get("success");
JsonNode value = response.get("value");
if (success.asBoolean()) {
String value = value .toString();
value = value .replaceAll("\"", "").replaceAll("\\[", "").replaceAll("\\]", "")
.replace("\\", "");
return Arrays.asList(value .split(","));
}
嗨,謝謝你的幫助,是你發佈的樣本能否解決領先和尾隨的雙引號問題?因爲我試過了,似乎無法從json解析到'List'。 '不能從[Source:「[\」1-1 \「,\」1-2 \「,\」1-3 \「]」;';' –
hades
'VALUE_STRING標記 中反序列化java.util.ArrayList實例'mapper.readValue'應該接受一個JSON字符串,就像'payload'變量一樣。也許它只是'mapper.readTree(response.get(「value」)。toString());'沒有TypeReference,但這會給一個JsonNode,而不是一個列表 –
@hades我用一個例子更新了我的答案 –