如现在要解析Person对象为json,但其name对应的get方法里面做了限制在某些情况下会抛出异常,这样就影响了fastjson的解析,怎样能在get方法发生异常的情况下直接读取其对应的私有属性(name), 实例代码如下:
public class Person {
private String name;
private String country;
private int age;
public String getName() {
/**
* 以下表示在某种情况下 此get方法可能会发生异常
*/
//
throw new IllegalStateException("cached!");
}
public void setName(String name) {
this.name = name;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
测试代码如下:
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p=new Person();
p.setAge(10);
p.setName("Person1");
p.setCountry("CN");
System.out.println(JSON.toJSONString(p));
}
异常如下:
Exception in thread "main" java.lang.IllegalStateException: cached!
at json.Person.getName(Person.java:12)
at Serializer_1.write1(Unknown Source)
at Serializer_1.write(Unknown Source)
at com.alibaba.fastjson.serializer.JSONSerializer.write(JSONSerializer.java:369)
at com.alibaba.fastjson.JSON.toJSONString(JSON.java:418)
at com.alibaba.fastjson.JSON.toJSONString(JSON.java:406)
at Test.main(Test.java:22)
我看了一下fastjson貌似抓取get方法这一部分是用asm实现的,我对asm不熟不知道怎样修改其代码,请高手帮忙,谢谢!