jsonObject Unknown property异常
原址https://my.oschina.net/heweipo/blog/368116
java.lang.NoSuchMethodException: Unknown property XXXX
具体解决,如下代码:
public class JsonTest {
@Test
public void testJson2(){
String json = "{"message":{"status":6000,"msg":"未知异常","success":"true"}}";
JsonConfig config = new JsonConfig();
config.setJavaPropertyFilter(new PropertyFilter(){
public boolean apply(Object paramObject1, String paramString,
Object paramObject2) {
if(paramString.equals("status")||paramString.equals("msg")){
return false;
}
return true;
}});
Message message = (Message)JSONObject.toBean(JSONObject.fromObject(JSONObject.fromObject(json).getString("message"),config),Message.class);
System.out.println(message.getStatus());
}
}
总结:
config配置项的作用就是过滤属性,出现这个Exception的原因有两点:
1)Json字符串属性过多,没有对应上javaBean的属性,所以程序会抛异常没有对应的属性。(使用gson不会出错)。
2)使用JsonConfig配置项过滤掉多余的属性。注意,是在字符串转为JSONObject的时候过滤。
3)JSONObject.toBean可以接收三个参数,这个接收三个参数的方法不要使用,会报错,而要使用接收两个参数的方法,另外,属性的过滤一定是在转为JSONObject的时候,而不是转Bean的时候。
4)JSONObject.fromObject(JSONObject.fromObject(result).getString("message"),config) 字符串转为JSONObject的时候过滤
5)(Message)JSONObject.toBean(JSONObject.fromObject(JSONObject.fromObject(result).getString("message"),config),Message.class); 不能使用(Message)JSONObject.toBean(JSONObject.fromObject(JSONObject.fromObject(result).getString("message"),config),Message.class,config);
否则又报错:
类转换异常
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。