您的位置:首页 > 移动开发 > Objective-C

jsonObject Unknown property异常

2017-01-20 14:17 603 查看
原址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);

否则又报错:

类转换异常
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐