如何把json树字符串转换为java list对象?

jbas 2009-10-27 10:16:20
各位好,
我现在有一个json 树的字符串,想把它转换为list<AClass>对象,请帮一下。
谢谢!

public void test8(){
String s="[{\"id\":\"329\",\"txt\":\"IT\",\"items\":[{\"id\":\"337\",\"txt\":\"机构\"},{\"id\":\"338\",\"txt\":\"机构2\",\"items\":[{id:\"887\",txt:\"内部\"},{id:\"888\",txt:\"内部2\"}]}]},{\"id\":\"345\",\"txt\":\"IT2\"}]";
List<AClass> rs=test6(s);
}

请问这个test6该怎么写,执行完后rs 中存放都是AClass对象。这个String s只是一个示例,实际它会是一个不定层数的数。

AClass 类是这样的形式:

public class AClass{
private String id;
private String txt;
private List items;
private String iscat;

public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTxt() {
return txt;
}
public void setTxt(String txt) {
this.txt = txt;
}



public List getItems() {
return items;
}
public void setItems(List items) {
this.items = items;
}
public String getIscat() {
return iscat;
}
public void setIscat(String iscat) {
this.iscat = iscat;
}



}

...全文
1954 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
alen 2012-03-09
  • 打赏
  • 举报
回复
这个怎么弄啊,求教啊
ldy214 2010-07-21
  • 打赏
  • 举报
回复
可以用ext的树组建,树的数据就来自一个list,返回的可以是object的数组,在转成list
yc_first 2010-07-21
  • 打赏
  • 举报
回复
public String test3(String arg0) {
List<ATreeClass> objt= JSonUtil.jsonStrToList(arg0,ATreeClass.class);
List<ATreeClass> rslist=new ArrayList<ATreeClass>();
actJson(objt,rslist);
return "";
}

private void actJson(List<ATreeClass> items,List<ATreeClass> rslist){
for(ATreeClass o:items){
lena_fox 2010-07-21
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
jbas 2009-10-28
  • 打赏
  • 举报
回复
closewbq,
你好,你这个代码好像遍历了所有的key值,但好像不能把一些属性值组合成一个Object.

最后这样实现了。
谢谢各位。

public String test3(String arg0) {
List<ATreeClass> objt= JSonUtil.jsonStrToList(arg0,ATreeClass.class);
List<ATreeClass> rslist=new ArrayList<ATreeClass>();
actJson(objt,rslist);
return "";
}

private void actJson(List<ATreeClass> items,List<ATreeClass> rslist){
for(ATreeClass o:items){
ATreeClass aa=new ATreeClass();
aa.setId(o.getId());
aa.setTxt(o.getTxt());
aa.setIscat(o.getIscat());
aa.setItems(o.getItems());
rslist.add(aa);
if(o.getItems()!=null){
actJson(o.getItems(),rslist);
}
}
}

public static List<ATreeClass> jsonStrToList(String jsonString, Class pojoClass){
JSONArray jsonArray = JSONArray.fromObject(jsonString);
JSONObject jsonObject;
List list = new ArrayList();
Map <String, Class> m = new HashMap <String, Class>();
m.put("items", pojoClass);
for ( int i = 0 ; i<jsonArray.size(); i++){
jsonObject = jsonArray.getJSONObject(i);
ATreeClass fb= (ATreeClass)JSONObject.toBean(jsonObject,ATreeClass.class,m);
list.add(fb);
}
return list;
}
closewbq 2009-10-27
  • 打赏
  • 举报
回复

import java.util.Iterator;
import org.json.JSONArray;
import org.json.JSONException;
public class Test{
public static void main(String[] args) throws JSONException{
String s="[{\"id\":\"329\",\"txt\":\"IT\",\"items\":[{\"id\":\"337\",\"txt\":\"机构\"}," +
"{\"id\":\"338\",\"txt\":\"机构2\",\"items\":[{id:\"887\",txt:\"内部\"}," +
"{id:\"888\",txt:\"内部2\"}]}]},{\"id\":\"345\",\"txt\":\"IT2\"}]";

jsonToList(s);
}
public static void jsonToList(String str) throws JSONException{
JSONArray ja=new JSONArray(str);
for(int i=0;i<ja.length();i++){
Iterator<?> items=ja.getJSONObject(i).keys();
while(items.hasNext()){
String keyName=items.next().toString();
System.out.println(keyName+": "+ja.getJSONObject(i).getString(keyName));
if("items".equals(keyName))
jsonToList(ja.getJSONObject(i).getString(keyName));
}
}
}
}

解析就这么解析,至于怎么组装成list,你自己想办法!
平淡面对 2009-10-27
  • 打赏
  • 举报
回复
推荐使用JSON.simple库。
swandragon 2009-10-27
  • 打赏
  • 举报
回复
路过学习下
jbas 2009-10-27
  • 打赏
  • 举报
回复
fishrui,你好,

你这样只能遍历出最外层的2个节点,里面的items节点不能遍历出来。
wgj830823 2009-10-27
  • 打赏
  • 举报
回复
正解
用开源的spi就可以了
net.sf.json这个比较常用

[Quote=引用 1 楼 fishrui 的回复:]
Java codepackage test2;import java.util.List;import net.sf.json.JSONArray;publicclass ToJSON {publicstatic List test(String s,Class clazz){
JSONArray jarr=JSONArray.fromObject(s);return (List)¡­
[/Quote]
老紫竹 2009-10-27
  • 打赏
  • 举报
回复
www.json.org
看看
fishrui 2009-10-27
  • 打赏
  • 举报
回复

package test2;

import java.util.List;
import net.sf.json.JSONArray;

public class ToJSON {
public static List test(String s,Class clazz){
JSONArray jarr=JSONArray.fromObject(s);
return (List)jarr.toCollection(jarr,clazz);
}

public static void main(String[] args){
String s="[{\"id\":\"329\",\"txt\":\"IT\",\"items\":[{\"id\":\"337\",\"txt\":\"机构\"},{\"id\":\"338\",\"txt\":\"机构2\",\"items\":[{id:\"887\",txt:\"内部\"},{id:\"888\",txt:\"内部2\"}]}]},{\"id\":\"345\",\"txt\":\"IT2\"}]";
List<AClass> list=test(s,AClass.class);
for(AClass ac:list){
System.out.println(ac.getId());
}
}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧