-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我用一个例子更新了我的答案 –