首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

json字符串中的很多对象如何转成java中的对象.

2013-03-10 
json字符串中的很多对象怎么转成java中的对象...String jsonstr {name:北京,area:16000,renkou:100

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  这个你的写一个类 包含 那几个属性 
[解决办法]

引用:
引用:添加JSON.jar到classpath中,然后使用JSONObject.from(strObj)或者JSONArray.from(strObj),然后通过obj.get(key)即可拿出指定的key对应的val。

大哥,不是这个意思,我的意思是:哪个json字符串,包含了很多json对象哦,怎样一一解析出来,把每一个……

自动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) {


try {
return JSONObject.toBean(JSONObject.fromObject(json), class1);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}



也许这就是你想要的答案了
拿去试试吧,我都是这样整的,木有问题很好使呀
[解决办法]
再给你一个:
/**
 * 把json格式的字符串转换成集合
 * @param json 字符串
 * @param class1 集合中存放的对象的class
 * @return List
 */
@SuppressWarnings("unchecked")
public List jsonToList(String json, Class class1) {
try {
List list = new ArrayList();
Object[] array = (Object[]) JSONArray.toArray(JSONArray.fromObject(json), class1);
if (null != array && array.length > 0) {
for (int i = 0; i < array.length; i++) {
list.add(array[i]);
}
}
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

[解决办法]
这个问题我前天也遇到了,我遇到的那个形式貌似还更复杂一些,主要多了几个外括号,
String str="=" {name:"北京",area:"16000",renkou:"1000万"},  
{name:"上海",area:"10000",renkou:"1000万"},...";
ObjectMapper objectMapper = new ObjectMapper();
list<User> userlist=objectMapper.readValue(str, User.class);
这个是照着你提供的我改的,你试试。
User类自己创建没问题吧?
需要jar包:import org.codehaus.jackson.map.ObjectMapper;

热点排行