我从休息服务中获得了以下类型的json,我需要解析它并通过它获取数据。这个json在Json格式方面是无效的,但有没有办法解析这个或忽略一个有逗号的行
{
"yshan" : "EMP",
"yuansshi" : "EMP",
"zacharyb" : "EMP",
"zholin" : "EMP",
"fy16interns_bxb" : {,
"avaderiy" : "EMP",
"crellis" : "EMP",
}
}
我的主要目的是获取所有具有值“EMP”的“关键”字段名称,无论它们是嵌套的还是常规的json?
我使用jsonnode和jsonNode.getFields()进行检索。这适用于没有嵌套元素的json,但对于具有嵌套元素的json,它会抛出“意外字符”错误,如
Unexpected character (',' (code 44)): was expecting either valid name character (for unquoted name) or double-quote (for quoted) to start field name
如果你可以帮助我,那将是可观的
答案 0 :(得分:1)
掉线会导致更糟糕的json。
如果错误始终相同,也许它总是一个大括号后面跟一个逗号,那么你可以试试
json.replace("{,", "{")
)当然:只有修复API是不可能的,并且解析了修补过的'回应是有道理的。
答案 1 :(得分:0)
如果您只想提取值为"EMP"
的键,则可以使用正则表达式:
"([^"]+)"\s*:\s*"EMP"
作为Java代码,那将是:
Matcher m = Pattern.compile("\"([^\"]+)\"\\s*:\\s*\"EMP\"").matcher(input);
while (m.find()) {
System.out.println(m.group(1));
}
请参阅regex101。