Nit*_*esh 4 java string json jackson unicode-escapes
JSONNode#at如果 JSON 键包含/也用作at方法语法中的分隔符,我将无法使用 jackson方法匹配节点。
例如在下面的JSON
{
"message": "Hi",
"place/json": {
"name": "World!"
}
}
Run Code Online (Sandbox Code Playgroud)
我们有 key place/json,其中包括/key 的一部分。
如果我使用类似的代码
public static void main(String[] args) throws IOException {
ObjectMapper mapper = new ObjectMapper();
String jsonHiWorld = "{\"message\":\"Hi\",\"place/json\":{\"name\":\"World!\"}}";
String message = mapper.readTree(jsonHiWorld).at("/message").asText();
String place = mapper.readTree(jsonHiWorld).at("/place/json/name").asText();
System.out.println(message + " " + place); // should print "Hi World!"
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出:Hi
但期望输出是:Hi World
该JSONNode#at方法使用 JSON 指针匹配 JSON 文档中的节点。要/使用 JSON 指针匹配属性名称中的字符,您必须将/符号替换为~1.
尝试更换
String place = mapper.readTree(jsonHiWorld).at("/place/json/name").asText();
Run Code Online (Sandbox Code Playgroud)
和
String place = mapper.readTree(jsonHiWorld).at("/place~1json/name").asText();
Run Code Online (Sandbox Code Playgroud)
另请参阅RFC 6901第 5 节中的示例。
| 归档时间: |
|
| 查看次数: |
387 次 |
| 最近记录: |