Java Jackson-Json解析失败,因为值中有额外的引号
我正在努力使用jackon将json字符串转换为java对象。这可能是重复的问题,但我找不到解决此问题的任何方法: 以下是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;
{
"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,所以我不应该转义任何字段的开始和结束引号,我只需要转义值内的引号。我不确定引号的模式,引号的位置可以在字段值内的任何地方。那么应该用什么模式来替换它呢?