Java 我们可以忽略json解析中的一行吗?

Java 我们可以忽略json解析中的一行吗?,java,json,jackson,Java,Json,Jackson,我从rest服务中获得了一个以下类型的json,我需要解析它并通过它获取数据。就json格式而言,这个json是无效的,但是有没有办法解析它或者忽略一个带有逗号的行 { "yshan" : "EMP", "yuansshi" : "EMP", "zacharyb" : "EMP", "zholin" : "EMP", "fy16interns_bxb" : {, "avaderiy" : "EMP", "crellis" : "E

我从rest服务中获得了一个以下类型的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

如果你能帮我的话,这将是很明显的

删除该行将导致更糟糕的json

如果错误总是一样的,可能总是一个大括号后跟逗号,那么你可以试试

读取字符串中的json响应 清理字符串示例:json.replace{{ 解析清理后的字符串。
当然:只有在无法修复API且解析“修补”响应时才有意义。

如果只想提取值为EMP的键,可以使用正则表达式:

[^]+\s*:\s*环境管理计划 作为Java代码,这将是:

Matcher m = Pattern.compile("\"([^\"]+)\"\\s*:\\s*\"EMP\"").matcher(input);
while (m.find()) {
    System.out.println(m.group(1));
}

请参阅。

它不是有效的JSON,因此无法使用反序列化器解析。谢谢您的回复。是的,我知道它不是有效的JSON,但获取此类信息的更好格式是什么?或者在解析JSON时是否有可能忽略一行或几行?也许您可以尝试将fy16interns_bxb值作为普通字符串获取,否客观地说,您修复了服务器或联系了APIs构造糟糕的负责人,但是否可以仅获取诸如明文之类的行以及json的其他行作为json ObjectsHanks作为响应。我已经对API进行了修复,以便获得有效的json。现在问题已经解决。感谢Hanks的响应。我已经进行了修复到API,以便获得有效的JSON。现在问题已经解决。谢谢