使用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);
                }
            }
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值