org.codehaus.jackson.map.JsonMappingException: Can not deserialize
来源:互联网 发布:周边手办数据 编辑:程序博客网 时间:2024/05/01 20:24
在用jackson-core-asl-1.9.10.jar和jackson-mapper-asl-1.9.10.jar两个包做json字符串转换Pojo对象时报如下异常:
org.codehaus.jackson.map.JsonMappingException:Can not deserialize instance of java.util.List out of START_OBJECT token
Java代码如下:
ObjectMapper mapper = new ObjectMapper();
String myajsonstr = "{"myname":{"first":"yu2","last":"shibo2"},"myflag":false,"myversion":"version-1.1","myage":31,"mygender":"FAMALE"}";
List myListBean = mapper.readValue(myajsonstr, new TypeReference>(){});
运行后的信息如下:
org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.List out of START_OBJECT token
at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)
at org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:198)
at org.codehaus.jackson.map.deser.CollectionDeserializer.handleNonArray(CollectionDeserializer.java:149)
at org.codehaus.jackson.map.deser.CollectionDeserializer.deserialize(CollectionDeserializer.java:107)
at org.codehaus.jackson.map.deser.CollectionDeserializer.deserialize(CollectionDeserializer.java:97)
at org.codehaus.jackson.map.deser.CollectionDeserializer.deserialize(CollectionDeserializer.java:26)
at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2395)
at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1602)
上述问题在网上搜了好久都没找到解决的办法,最后只能根据报错信息去查jackson的API文档,这个过程比较痛苦,就是一个一个的做实验,根据错误信息中的Can not deserialize instance of java.util.List out of START_OBJECT token这一句基本可以断定是类信息不能被反序列化,到jackson的API文档里(http://jackson.codehaus.org/1.8.8/javadoc/index.html)找到DeserializationConfig.Feature这个Enum类,发现其中有个ACCEPT_SINGLE_VALUE_AS_ARRAY属性,大致翻译了一下给的解释,意思是反序列化的作用是确定是否强制让非数组模式的json字符串与java集合类型相匹配。
【解决方法】:在List myListBean = mapper.readValue(myajsonstr, new TypeReference>(){});这句之前加上mapper.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);这句,DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY属性默认值是false,其中的MyAnotherJsonBean.java是笔者迎合json字符串自定义的Pojo类,里面就是基本属性和set、get方法。
http://blog.sina.com.cn/s/blog_4f925fc30102eel3.html
0 0
- org.codehaus.jackson.map.JsonMappingException: Can not deserialize
- org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.ArrayList o
- Jackson报错org.codehaus.jackson.map.JsonMappingException
- hadoop出现ava.lang.ClassNotFoundException: org.codehaus.jackson.map.JsonMappingException
- org.codehaus.jackson.map.JsonMappingException: No serializer found for class
- org.codehaus.jackson.map.JsonMappingException: Infinite recursion的解决
- springmvc+hibernate时Jackson报错org.codehaus.jackson.map.JsonMappingException
- org.codehaus.jackson.map.JsonMappingException: No serializer found for class org.hibernate.proxy....
- HTTP请求数据返回解析Josn org.codehaus.jackson.map.JsonMappingException的解决方法
- org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [si
- com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize out of START_ARRAY token
- Could not find class 'org.codehaus.jackson.map.MappingJsonFactory'
- java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.jackson.map.ObjectMapper
- 包引用冲突 Jackson : NoSuchMethodError for org.codehaus.jackson.map...
- 项目启动报错.NoClassDefFoundError: org/codehaus/jackson/map/ObjectMapper
- org.codehaus.jackson.map包下的ObjectMapper类源码
- java.lang.NoClassDefFoundError: org/codehaus/jackson/map/ObjectMapper
- 多对一双向关联后使用org.codehaus.jackson.map.ObjectMapper转json时报org.codehaus.jackson.map.ObjectMapper;
- 二元多项式
- Codeforces Round #316 (Div. 2) D. Tree Requests(DFS+状态压缩)
- Yahoo!军规详解
- 对机器学习江湖的认识
- CentOS查看和修改MySQL字符集
- org.codehaus.jackson.map.JsonMappingException: Can not deserialize
- JAVA日志系统
- linux环境变量设置方法总结(PATH/LD_LIBRARY_PATH)
- D - A very hard Aoshu problem----(2015 summer training #12(Team_Qualifying))
- 使用jsp读取HTML格式文件
- Tomcat6配置数据源
- 64Minimum Path Sum
- HDU 1017 A Mathematical Curiosity (枚举水题)
- Java 8 类型转换及改进