[英]Jackson- Json parsing failure because of extra quotes in values
我正在努力使用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)
有什么辦法讓傑克遜在解析時會逃避字段值中的其他引號( ""not listed""
)? 如何解決這個解析問題?
第一
接受這是無效的JSON,你必須在傑克遜為你解析它之前改變它。
第二
如果雙引號加倍是唯一的問題,那么在將字符串傳遞給jackson之前使用以下之一預處理該字符串:
newValue = initialValue.replaceAll("\\"\\"", "\\"");
newValue2 = StringUtils.replace(initialValue, "\\"\\"", "\\"\\\\\\"");
我建議在上面的選項2中使用Apache Commons Lang3 StringUtils。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.