使用fastjson解析json字符串

在日常的工作中,json是一种非常常见的数据格式,它可以被理解为键值对存储的。由于最近分析业务的时候,又处理了两种json字符串,今天我就将怎么处理的给大家分享一下,希望能够给学习这方面的朋友一些帮助。再给大家安利个网站https://www.json.cn/,可以分析你得到的数据是否是json格式的。

1.Json套Json

我自己造了条数据,需求是取到内部json中的score。

{"842":{"useranswer":"3407|3408","score":0},"846":{"useranswer":"3414","score":0},"847":{"useranswer":"3499","score":2}}

我们可以看出,它是一个json字符串中,又有三个json字符串。

import com.alibaba.fastjson.JSONObject;

import java.util.Iterator;
import java.util.Set;

public class JsonAndJson {
    public static void main(String[] args) {
        String jsonStr="{\"842\":{\"useranswer\":\"3407|3408\",\"score\":0},\"846\":{\"useranswer\":\"3414\",\"score\":0},\"847\":{\"useranswer\":\"3499\",\"score\":2}}";
        //先将这条数据解析为JSONObject
        JSONObject outJson = JSONObject.parseObject(jsonStr);
        //因为外部的JSON的key为三位数字的编号,我们需要得到编号,才能得到它对应的内部json
        Set<String> jsonSet = outJson.keySet();
        Iterator<String> iterator = jsonSet.iterator();
        while (iterator.hasNext()){
           //通过迭代器可以取到外部json的key
            String json = iterator.next();
            //取得内部json字符串
            String string = outJson.getString(json);
            //将内部json字符串解析为object对象
            JSONObject inJson = JSONObject.parseObject(string);
            //通过score,得到value值
            String score = inJson.getString("score");
            System.out.println(score);
        }
    }
}

2.Json数组

这里需求是,拿到除了pid为0的name,并将拿到的拼接起来。

[{"id":50,"name":"Python","pId":0},{"id":77,"name":"web前端","pId":50},{"id":78,"name":"Linux&数据库","pId":50}]

这里就需要进行与第一个Json套Json不同的操作了

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;


public class JsonArray {
    public static void main(String[] args) {
        String jsonArray="[{\"id\":50,\"name\":\"Python\",\"pId\":0},{\"id\":77,\"name\":\"web前端\",\"pId\":50},{\"id\":78,\"name\":\"Linux&数据库\",\"pId\":50}]\n";
        StringBuffer sb=new StringBuffer();
        //需要使用的JSON的parseArray方法,将jsonArray解析为object类型的数组
        JSONArray objects = JSON.parseArray(jsonArray);
        for(int i=0;i<objects.size();i++){
        //通过数组下标取到object,使用强转转为JSONObject,之后进行操作
            JSONObject object = (JSONObject) objects.get(i);
            if(!object.getString("pId").equals("0")){
                sb.append(object.getString("name")+",") ;
            }
        }
        //这个方法是去掉stringbuffer的最后一位的字符
        sb.deleteCharAt(sb.length()-1);
        System.out.println(sb);
        }
    }
  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值