Java Jackson-Json解析失败,因为值中有额外的引号

Java Jackson-Json解析失败,因为值中有额外的引号,java,json,jackson,Java,Json,Jackson,我正在努力使用jackon将json字符串转换为java对象。这可能是重复的问题,但我找不到解决此问题的任何方法: 以下是json字符串: { "hierCD":"B", "category":"C", "id":"ty8lre", "bca":"8543289", "companyName":""not listed"", "productLineCD":"CARD" } Java Bean: public class HierAttributes{ protected String id;

我正在努力使用jackon将json字符串转换为java对象。这可能是重复的问题,但我找不到解决此问题的任何方法:

以下是json字符串:

{
"hierCD":"B",
"category":"C",
"id":"ty8lre",
"bca":"8543289",
"companyName":""not listed"",
"productLineCD":"CARD"
}
Java Bean:

public class HierAttributes{
protected String id;
protected String bca;
protected String companyName;
protected String productLineCD;
protected String hierCD;
protected String category;
}
尝试通过以下方式使用jackson将json转换为对象:

ObjectMapper mapper = new ObjectMapper(new JsonFactory());
mapper.readValue(nodeStr, HierAttributes.class);
我得到以下例外:

com.fasterxml.jackson.core.JsonParseException: Unexpected character ('n' (code 110)): was expecting comma to separate OBJECT entries
 at [Source: {"hierCD":"B","category":"C","id":"ty8lre","bca":"8543289","companyName":""not listed"","productLineCD":"CARD"}; line: 1, column: 77]
    at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1581)
    at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:533)
    at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:462)
    at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._skipComma(ReaderBasedJsonParser.java:1957)
    at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextFieldName(ReaderBasedJsonParser.java:770)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:265)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:125)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3736)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2726)
有没有什么方法可以让jackson在解析时对字段值(
“未列出”
)中的附加引号进行转义?如何解决这个解析问题

首先

接受这不是有效的JSON,在jackson为您解析之前,您必须修改它

第二

如果双引号加倍是唯一的问题,那么在将字符串传递给jackson之前,请使用以下方法之一预处理该字符串:

  • 删除双引号:
    newValue=initialValue.replaceAll(“\”,“\”);
  • 在内部引号中添加反斜杠。
    newValue2=StringUtils.replace(initialValue,“\”,“\”\ \ \”);

  • 我建议对上面的选项2使用Apache Commons Lang3 StringUtils。

    在Jackson中从来没有这样做过,但是正常的
    \“
    会不会不起作用。。。?IE
    “\”未列出\”
    这是无效的json。是的,这是无效的json,如何仅转义那些额外的引号?Jackson不会解析无效的json(除了一个特定的情况,不是这个)。@Sotirios,要使它成为有效的json,我需要添加转义额外的引号,如何以编程方式进行?因为,它是JSON,所以我不应该转义任何字段的开始和结束引号,我只需要转义值内的引号。我不确定引号的模式,引号的位置可以在字段值内的任何地方。那么应该用什么模式来替换它呢?