在项目中一直用String s = jsonObject.getString( "s" )来获取字段,突然有一天*******,让他们传json数据全部用string类型,否则如果一会传int一会又是string的话我们安卓端解析容易报类型转换异常。
咋一听感觉好像有一定的道理,于是我就把获取的json字符串打印出来,一看确实有的是int有的string。然而奇怪的是,我所有的项目都是用getString来获取字段的,却从没报过类型转换异常。
我就仔细研究了一下,不过说实话,这个真没什么好研究的,一看源码,一清二楚。
1.简单的解析json字符串首先将json字符串转换为json对象,然后再解析json对象,过程如下。
JSONObject jsonObject = JSONObject.fromObject(jsonStr);
根据json中的键得到它的值String name = jsonObject.getString("name");
int num = jsonObject.getInt("num");
String sex = jsonObject.getString("sex");
int age = jsonObject.getInt("age");
2.将json字符串转换为java对象同样先将json字符串转换为json对象,再将json对象转换为java对象,如下所示。
JSONObject obj = new JSONObject().fromObject(jsonStr);//将json字符串转换为json对象
将json对象转换为java对象Person jb = (Person)JSONObject.toBean(obj,Person.class);//将建json对象转换为Person对象
3.将java对象转换为json字符串先将java对象转换为json对象,在将json对象转换为json字符串JSONObject json = JSONObject.fromObject(obj);//将java对象转换为json对象String str = json.toString();//将json对象转换为字符串