应用jackson-core-asl-1.9.10.jar和jackson-mapper-asl-1.9.10.jar两个jar包进行json和pojo之间的转换。String myajsonstr = "{\"myname\":{\"first\":\"yu2\",\"last\":\"shibo2\"},\"myflag\":false,\"myversion\":\"version-1.1\",\"myage\":31,\"mygender\":\"FAMALE\"}"; 在把myajsonstr转换成pojo的时候不会出问题。String myajsonstr2 = "{'myname':{'first':'yu2','last':'shibo2'},'myflag':false,'myversion':'version-1.2','myage':32,'mygender':'FAMALE'}"; 在把myajsonstr2转换成pojo的时候就会出如下问题: ERROR [main]: (VoConvertJsonUtils.java:92) - Unexpected character (''' (code 39)): was expecting double-quote to start field name at [Source: java.io.StringReader@1f7fbe; line: 1, column: 3] org.codehaus.jackson.JsonParseException: Unexpected character (''' (code 39)): was expecting double-quote to start field name at [Source: java.io.StringReader@1f7fbe; line: 1, column: 3] at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:1291) at org.codehaus.jackson.impl.JsonParserMinimalBase._reportError(JsonParserMinimalBase.java:385) at org.codehaus.jackson.impl.JsonParserMinimalBase._reportUnexpectedChar(JsonParserMinimalBase.java:306) at org.codehaus.jackson.impl.ReaderBasedParser._handleUnusualFieldName(ReaderBasedParser.java:512) at org.codehaus.jackson.impl.ReaderBasedParser._parseFieldName(ReaderBasedParser.java:405) at org.codehaus.jackson.impl.ReaderBasedParser.nextToken(ReaderBasedParser.java:295) at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:349) at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2395) at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1595) at com.shihuan.core.framework.utils.VoConvertJsonUtils.main(VoConvertJsonUtils.java:81) 【问题原因】:上面问题的原因是由于String字符串中用了单引('')号。
【解决方法】:在执行mapper.readValue(myajsonstr2, MyAnotherJsonBean.class);之前先执行 mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true); 青春就应该这样绽放 游戏测试:三国时期谁是你最好的兄弟!! 你不得不信的星座秘密。
No comments:
Post a Comment