json字符串转list
luyued 发布于 2011-01-07 05:01 浏览 N 次谢谢!
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 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;
}
}
- Java code
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 list=test(s,AClass.class); for(AClass ac:list){ System.out.println(ac.getId()); } } }
www.json.org
看看正解
用开源的spi就可以了
net.sf.json这个比较常用fishrui,你好,
你这样只能遍历出最外层的2个节点,里面的items节点不能遍历出来。
路过学习下推荐使用JSON.simple库。- Java code
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
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,你自己想办法!
closewbq,你好,你这个代码好像遍历了所有的key值,但好像不能把一些属性值组合成一个Object.
最后这样实现了。
谢谢各位。
public String test3(String arg0) {
List objt= JSonUtil.jsonStrToList(arg0,ATreeClass.class);
List rslist=new ArrayList();
actJson(objt,rslist);
return "";
}
private void actJson(List items,List 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 jsonStrToList(String jsonString, Class pojoClass){
JSONArray jsonArray = JSONArray.fromObject(jsonString);
JSONObject jsonObject;
List list = new ArrayList();
Map
m.put("items", pojoClass);
for ( int i = 0 ; i
ATreeClass fb= (ATreeClass)JSONObject.toBean(jsonObject,ATreeClass.class,m);
list.add(fb);
}
return list;
}
List objt= JSonUtil.jsonStrToList(arg0,ATreeClass.class);
List rslist=new ArrayList();
actJson(objt,rslist);
return "";
}
private void actJson(List items,List rslist){
for(ATreeClass o:items){
- 07-01· 北凉国的那些事(组诗)
- 07-01· 《乱世佛音》 第七章 巨变
- 07-01· 南匈奴始末(3)
- 06-30· 流浪在波希米尼亚
- 06-30· 希尼亚从大洋西岸放飞新
- 06-28· 瑪利亞之城 - 家庭日 "光
- 06-28· 至青年营弟兄姐妹的一封
- 06-26· 《三国群英大富翁》追忆
- 06-24· 东莞血汗工厂实录(281:沙田
- 06-22· 第一次看戏
- 06-22· 经典复刻,独一无二:试
- 06-22· 蓝旗营教学中心9月份盛大
- 06-22· 品牌折扣女装嫣然品牌折
- 06-21· IQVopdnkvdz 1100
- 06-21· kriyoylto8fyds'p;tyijyfuifiogoi
- 06-21· 巴黎春天缤纷圣诞 喜迎新
- 06-21· 晒JS宝宝贝贝些 咯
- 06-21· 司马氏的谥法和葬仪
- 06-21· [转载]司马氏的谥法和葬仪
- 06-21· 闲来蓟县看秋山