繁体   English   中英

解码JSON字符串以在java中生成对象时解析问题

[英]Parsing issue when decoding a JSON String to generate the objects in java

场景:

我使用以下代码解码JSON字符串以使用它生成对象。

在此输入图像描述

{"av":{"tid":"1000","sslist":[{"ss":{"ssId":"1","ssName":"Test ss "name one"}},{"ss":{"ssId":"2","ssName":"Test ss name two"}}],"hl":{"lc":0}}}

现在,我有数百个sslist元素,所有都失败了,因为在第一个ss元素中有一个血腥的" ssName "

但是当String在createJsonParser()方法的最开始解析时,这个错误就会抛出。

题 :

我想忽略容易出错的节点,继续其他一百个正确的节点。 有没有其他方法可以做到这一点?

代码:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.JsonNode;

public class JsonReader {

        private void readJsonMethodThree(String jsonString) throws JsonParseException, IOException{

            ObjectMapper    mapper          = new ObjectMapper();
            JsonFactory     factory         = mapper.getJsonFactory();
            JsonParser      jsonParser      = factory.createJsonParser(jsonString);
            JsonNode        jsonNode        = mapper.readTree(jsonParser);

        }

}

例外:

Exception in thread "main" com.fasterxml.jackson.core.JsonParseException: Unexpected character ('n' (code 110)): was expecting comma to separate OBJECT entries
 at [Source: java.io.StringReader@12cc95d; line: 1, column: 69]
yourjsonstring = yourjsonstring.replaceAll("\"name", "name");

或使用更通用的模式,这只是一个例子。

当JSON的数据类型与cassandra中声明的数据类型不匹配时,您也可能会收到此错误。 具体来说,检查JSON值是否应该实际上是list类型而不是单例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM