使用Gson处理Json串
使用Json遍历规则的Json串:
使用Gson来处理,主要是将对应的json串和具体的类来映射
public class
TestJson {
public Stringmessage;
public String status;
public List<Special> data;
public void setMessage(Stringmessage) {
this.message
= message;
}
public StringgetMessage() {
return message;
}
public void setStatus(String
status) {
this.status
= status;
}
public StringgetStatus() {
return status;
}
public void setData(List<Special>data) {
this.data
= data;
}
public List<Special>getData() {
return data;
}
}
class Special
implementsSerializable {
public List<Special>children;
public Data data;
public List<Special> getChildren() {
return children;
}
public void setChildren(List<Special>children) {
this.children
= children;
}
public DatagetData() {
return data;
}
public void setData(Data data) {
this.data
= data;
}
}
class Data
implementsSerializable {
public Stringid;
public String groupId;
public String text;
public void setId(Stringid) {
this.id
= id;
}
public StringgetId() {
return id;
}
public void setGroupId(String groupId){
this.groupId
= groupId;
}
public StringgetGroupId() {
return groupId;
}
public void setText(String text) {
this.text
= text;
}
public StringgetText() {
return text;
}
}
class TestB {
public static List<Data>
allData=new
ArrayList<>();
public static void main(String[] args){
String dataList="";//构造成json串
Gson gson = new
Gson();
TestJson viewList = gson.fromJson(dataList,
new TypeToken<TestJson>() {
}.getType());
List<Special> list= viewList.getData();
//读取里面的每一个Special类,然后将每一个里面的data类读取出来
addBean(list);
}
public static void addBean(List<Special>list) {
for (Specialsp : list) {
allData.add(sp.getData());
if (sp.getChildren().size() >
0) {
//再将子children放入集合中遍历
addBean(sp.getChildren());
}
}
}
}
第二种是,在遍历的时候修改或者增加某个节点值:
public class TestJson implements Serializable{ public static void main(String[] args) { String te =""; Object obj = new Gson().fromJson(te,new TypeToken<Object>(){}.getType()); Map res = (Map) obj; addT(res.get("data")); System.out.println(new Gson().toJson(obj)); } public static void addT(Object obj){ Map bean = (Map) obj; if ("sum".equals(bean.get("value"))){ List childrenList = (List) bean.get("children"); for (Object children: childrenList){ Map map = (Map) children; if ("dqpwbyin".equals(map.get("id"))){ map.put("text","我把所有id为dqpwbyin的text改成了这句话"); } if ("sum".equals(map.get("value"))){ addT(map); } } } } }