json字符串中的很多对象怎么转成java中的对象...
String jsonstr=" {name:"北京",area:"16000",renkou:"1000万"},
{name:"上海",area:"10000",renkou:"1000万"},
....";
就像这样一个json字符串,我有一个Area类,要用从jsonstr中解析出来的对象的name,area,renkou,给新建的java对象赋值,然后把该java对象添加到arraylist中,怎样做,希望大哥些帮帮忙...
------解决方案--------------------添加JSON.jar到classpath中,然后使用JSONObject.from(strObj)或者JSONArray.from(strObj),然后通过obj.get(key)即可拿出指定的key对应的val。
------解决方案--------------------String jsonstr :这个字符串 既不是 JSONObject 也不是JSONArrray 对象 toString()后的字符串,只是有很多个JSONObject连在一起而已。
JSONArray 差了一对大括号[];"[....]"这个造型的字符串才是 JSONArray
比如一个定义了一个 类A 包含了三个属性 name、area、renkou
JSON 有个 json.me 这个工具比较好用
jsonstr = "[" + jsonstr + "]";
JSONArray jsonArr = new JSONArray(jsonstr); // 转成arr
List<A> list = new ArrayList<A>();
for(int i=0, len=jsonArr.length(); i<len; i++) {
JSONObject t = jsonArr.optJSONObject(i);
A a = new A();
a.setName(t.optString("name"));
......
list.add(a);
}
一楼那个方式 也可以 但是 你 还是要把这个 JSONArray字符串 补全
------解决方案--------------------json 也有类似xpath的工具,像 Google code 上的 json-path
------解决方案--------------------Thumbnail 弄成一个类 同样的方式转就是了
{
"precision": "zip",
"Latitude": 37.7668,
"Longitude": -122.3959,
"Thumbnail": {
"Url": "http://www.example.com/image/481989943",
"Height": 125,
"Width": "100"
}
}
这样一个 JSONObject t对象,
JSONObject th = t.optJSONObject("Thumbnail"); 后面操作一样了
Thumbnail 这个你的写一个类 包含 那几个属性
------解决方案--------------------
自动key放到对应的java对象的属性上我没弄过,不知道有没有这样的第三方库?
我的做法是想先通过key将val取出来,然后再通过反射将key对应的java属性上赋值val。这样逐个属性赋值。
------解决方案--------------------所需jar:
commons-beanutils.jar
commons-collections-3.2.1.jar
commons-lang-2.6.jar
ezmorph-1.0.3.jar
json-lib-2.4-jdk15.jar
import net.sf.json.JSONObject;
/**
* 把json格式的字符串转换成对象
* @param json 字符串
* @param class1 对象的class
* @return Object
*/
@SuppressWarnings("unchecked")
public Object jsonToObject(String json, Class class1) {