对象的某个属性是arrayList该如何转成json,又该怎么解析json呢


C/S传递对象时,如果对象的某个属性是arrayList该如何转成json,又该怎么解析json呢

json java Android

、xian 10 years, 4 months ago

Android终端可以使用谷歌的 Gson 包,效果拔群。详见 http://blog.csdn.net/lk_blog/article/details/7685169

无聊的水水 answered 10 years, 4 months ago

对于你的需求,你可以查找下JSON jar的api,里面有你需求的方法。

我之前用过 JSONArray.fromObject() 这个静态方法。

转成json后,不知道你要用在什么方面;不过手工读取也行吧,虽然麻烦点

斯巴达野人 answered 10 years, 4 months ago

你可以在 http://json.org 网站中找到第三方jar包使用。我们项目在用的是json-lib,google那个网上评论不错,也可以考虑使用,不过不同的jar包的调用方式都不尽相同,请自行斟酌使用。

以下为json-lib的一个小例子。
如果项目使用的是maven,那么直接在pom.xml中引入依赖既可以。如果是普通的java项目,那么就需要自己手动导入jar包。注意,该jar包需要依赖一些其他jar包,详情可以访问 http://json-lib.sourceforge.net/ 获得详情。


 <dependency>
    <groupId>net.sf.json-lib</groupId>
    <artifactId>json-lib</artifactId>
    <version>2.4</version>
    <classifier>jdk15</classifier>
</dependency>

以下是使用json-lib的array to json 的sample。


 List<Map<String, Object>> arrayList = new ArrayList<Map<String, Object>> ();

for(int i = 0; i < 5; i++){
    Map<String, Object> map = new HashMap<String, Object>();
    map.put(String.valueOf(i), i);
    arrayList.add(map);
}

JSONArray jsonArray = JSONArray.fromObject(arrayList);
System.out.print(jsonArray);

这段代码输出为


 [{"0":0},{"1":1},{"2":2},{"3":3},{"4":4}]

已经将该arrayList转换为JSONArray了。调用该jsonArray.toString()即可获得一个json字符串。

而且方便之处在于,JSONArray实现了List接口的。就可以当作普通的List来操作了。

接下来的代码为将上面获得的json字符串转换为arrayList的sample。


 String jsonStr = jsonArray.toString();
JSONArray toArray = JSONArray.fromObject(jsonStr);
List<Map<String, Object>> toList =  (List<Map<String, Object>>)JSONArray.toCollection(toArray, Map.class);
System.out.println(toList.get(0).get("0"));

可以看到,通过JSONArray的toCollection方法就可以方便的把JSONArray转换为ArrayList。

Mark-L answered 10 years, 4 months ago

Your Answer