把json对象转为java对象报错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了把json对象转为java对象报错相关的知识,希望对你有一定的参考价值。
/*封装的对象*/
public class Student
private int name;
private int age;
private Child child;
setter getter方法省略
public class Child
private String a;
private String b;
setter getter方法省略
public class json
public static void main()
String str = "name:11,age:2,child:[a:'3',b:'4']";
JSONObject obj = JSONObject.fromObject(str);
Map<String,Class> map = new HashMap<String,Class>();
map.put("child",Child.class);
Student s = (Student)JSONObject.toBean(obj,Student.class,map);
System.out.println(s.getAge());
System.out.println(s.getName());
System.out.println(s.getChild().getA());
System.out.println(s.getChild().getB());
/*报错*/
严重: Method invocation failed.
java.lang.IllegalArgumentException: argument type mismatch
org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:1759)
at org.apache.commons.beanutils.PropertyUtils.setSimpleProperty(PropertyUtils.java:577)
at net.sf.json.util.PropertySetStrategy$DefaultPropertySetStrategy.setProperty(PropertySetStrategy.java:43)
Exception in thread "main" net.sf.json.JSONException: java.lang.IllegalArgumentException: Cannot invoke com.Student.setChild - argument type mismatch
Caused by: java.lang.IllegalArgumentException: Cannot invoke com.Student.setChild - argument type mismatch
/*说明*/
我用的是json-lib-jdk.jar所需的jar包已经导入,就别在导入包的问题上浪费时间了
JSONObject obj = JSONObject.fromObject(new Student());
试试追问
new一个空对象有用吗,我是要把字符串转成java对象,不放字符串,放空对象肯定不对
追答我是举例子,告诉你把参数换成对象,你自己set进去值啊!
追问我是要转成java对象,你让我set进去值,那我用这个包转干嘛
参考技术B 推荐用alibaba的 fastjson支持级联转换 参考技术C 朋友,这问题你最终怎么解决的??同求啊
Json系列:Gson简单使用,把json字符串转为java对象。
- 引入Gson库
implementation 'com.google.code.gson:gson:2.8.6'
- 准备json字符串
{"name":"怪盗kidou","age":24,"emailAddress":"ikidou@example.com"}
- 手敲一个TestBean.java,先不用GsonFormat插件。
public class TestBean {
public String name;
public String age;
public String emailAddress;
}
- 把json字符串转为java Bean对象。
public class MainActivity extends AppCompatActivity {
private static final String TAG = "xx";
String jsonStr = "{\\"name\\":\\"怪盗kidou\\",\\"age\\":24,\\"emailAddress\\":\\"ikidou@example.com\\"}";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TestBean bean = new Gson().fromJson(jsonStr, TestBean.class);
Log.i(TAG, bean.name + " " + bean.age + " " + bean.emailAddress);
}
}
运行结果:
以上是关于把json对象转为java对象报错的主要内容,如果未能解决你的问题,请参考以下文章
Json系列:Gson简单使用,把json字符串转为java对象。