gpt4 book ai didi

java - JsonNode 将 JSON 转换为字符串列表

转载 作者:行者123 更新时间:2023-12-02 12:25:34 26 4
gpt4 key购买 nike

我有一个这种格式的 json:

{
"success": 1,
"value": "[\"1-1\",\"1-2\",\"1-3\"]"
}

成功实际上在 int值为 ListString ,我想获取并将这些元素放入 List<String> 中。字符串列表将是:

1-1
1-2
1-3

我实际上希望使用 JsonNode 解析整个 json,但限制我这样做的问题是:

  1. "[\"1-1\",\"1-2\",\"1-3\"]"用双引号括起来,所以它可能被视为字符串。
  2. 必须去掉字符串中的反斜杠

以下是我尝试过的解决方法,是否有任何优雅/更好的方法(没有正则表达式更好,只需将整个 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(","));
}

最佳答案

Have to get rid of the backslash in the string

不,你真的不知道。

so it might be treated as String.

实际上是这样,并且您将其视为字符串这一事实就是转义字符存在的原因。

如果将 response.get("value").toString() 传递给 ObjectMapper 解析器,您应该返回一个数组或列表

How to use Jackson to deserialise an array of objects

List<String> values = MAPPER.readValue("[\"hello\", \"world\"]", new TypeReference<List<String>>(){});
System.out.println(values); // [hello, world]
<小时/>

另一种更优选的解决方案是修复初始 JSON 的生成器。

关于java - JsonNode 将 JSON 转换为字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45497417/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com