我有一个json,其中包含大括号作为字符串字段之一的值。我们正在使用fasterxml.jackson api来解析json并遇到错误。
JSON:
{
"Message": {
"header": {
"correlationId": "c17da531-bf04-4cbf-9497-631353f9e8c5"
},
"body": {
"log": {
"id": "a8e5b716-1bc0-4829-bc47-1d28b4ff8920",
"type": "}test"
}
}
}
}
错误"意外的输入结束:期待字符串值的结束报价"
即使有}值作为值,我怎样才能继续解析?
答案 0 :(得分:0)
您需要将json字符串转换为包含转义字符。
我的工作实例
String json = "{\n" +
" \"Message\": {\n" +
" \"header\": {\n" +
" \"correlationId\": \"c17da531-bf04-4cbf-9497-631353f9e8c5\"\n" +
" },\n" +
" \"body\": {\n" +
" \"log\": {\n" +
" \"id\": \"a8e5b716-1bc0-4829-bc47-1d28b4ff8920\",\n" +
" \"type\": \"}test\"\n" +
" }\n" +
" }\n" +
" }\n" +
"}";
JsonFactory factory = new JsonFactory();
ObjectMapper mapper = new ObjectMapper(factory);
JsonNode rootNode = mapper.readTree(json);
Iterator<Map.Entry<String,JsonNode>> fieldsIterator = rootNode.fields();
while (fieldsIterator.hasNext()) {
Map.Entry<String,JsonNode> field = fieldsIterator.next();
System.out.println("Key: " + field.getKey() + "\tValue:" + field.getValue());
}
答案 1 :(得分:0)
您需要从json数据中转义}
。比如\}
。但是如果是这种情况你无法改变json(可能是你从某些API获取它),你可以在解析之前预处理json String。像
"\.*(\}).*"
Group 1.
匹配。