在日常的工作中,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
jsonSet = outJson.keySet(); Iterator
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
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202604.html原文链接:https://javaforall.net
