JSON数组是在JSON对象中延伸出来的,多个JSON对象就是一个JSON数组,数据之间由逗号分隔,花括号保存对象,方括号保存数组。那json数组怎么拼接?下面来我们就来给大家讲解一下。
我们可以在以下程序中使用addAll()方法(从接口 java.util.List继承) 合并两个JSON数组。
示例:
import org.json.simple.JSONArray; import java.io.IOException; public class MergeJSONArraysTest { public static void main(String[] args) throws IOException { JSONArray jsonArray1 = new JSONArray(); // first json array jsonArray1.add("Java"); jsonArray1.add("Python"); jsonArray1.add("Spark"); JSONArray jsonArray2 = new JSONArray(); // second json array jsonArray2.add("Selenium"); jsonArray2.add("ServiceNow"); jsonArray1.addAll(jsonArray2); // merge two arrays using addAll() method System.out.println(jsonArray1); } }
输出结果:
["Java","Python","Spark","Selenium","ServiceNow"]
json数据如何解析?
SON可以有两种格式,一种是对象格式的,另一种是数组对象,
{"name":"JSON","address":"北京市西城区","age":25}//JSON的对象格式的字符串
[{"name":"JSON","address":"北京市西城区","age":25}]//数据对象格式
从上面的两种格式可以看出对象格式和数组对象格式唯一的不同则是在对象格式的基础上加上了[],再来看具体的结构,可以看出都是以键值对的形式出现的,中间以英文状态下的逗号(,)分隔。
在前端和后端进行数据传输的时候这种格式也是很受欢迎的,后端返回json格式的字符串,前台使用js中的JSON.parse()方法把JSON字符串解析为json对象,然后进行遍历,供前端使用。
下面是java语言解析json数据的
public class JsonToObject { /**解析json字符串最外面是[]的情况 * [{"rating":["9.6","50"],"rank":1},{"rating":["9.6","50"],"rank":2}] * @throws Exception */ public List < map > toMapOne(String jsonString) throws Exception { //第一步是将最外面一层的数组解析去掉,得到所有的json串 JSONArray jsons = JSONArray.fromObject(jsonString); List < map > nodes = new ArrayList < map > (); //循环遍历所有的json子串 for (Object o: jsons) { JSONObject jsonNode = JSONObject.fromObject(o); MaptreeNodes = new HashMap(); String rating = ""; JSONArray ratingArray = JSONArray.fromObject(jsonNode.getString("rating") .trim()); for (Object ob: ratingArray) { rating += ob.toString() + ","; } treeNodes.put("rating", rating); treeNodes.put("rank", jsonNode.getString("rank") .trim()); nodes.add(treeNodes); } return nodes; } /**解析json字符串最外面是{}的情况 * {"data":[{"directors":["普特鹏·普罗萨卡·那·萨克那卡林","华森·波克彭"],"rate":"8.3"},{"directors":["大卫·芬奇"],"rate":"8.7"}]} * @throws Exception */ public List < map > toMapTwo(String jsonString) throws Exception { //首先将jsonString字符串转化为jsonObject JSONObject jsonNode = JSONObject.fromObject(jsonString); //然后获取json中data的值 JSONArray jsonArray = JSONArray.fromObject(jsonNode.getString("data")); List < map > nodes = new ArrayList < map > (); //遍历data里边的值 for (Object object: jsonArray) { JSONObject jsonNode2 = JSONObject.fromObject(object); MaptreeNodes = new HashMap(); treeNodes.put("directors", jsonNode2.getString("directors")); treeNodes.put("rate", jsonNode2.getString("rate") .trim()); nodes.add(treeNodes); } return nodes; } public static void main(String[] args) throws Exception { String jsonString = "[{\"rating\":[\"9.6\",\"50\"],\"rank\":1},{\"rating\":[\"9.6\",\"50\"],\"rank\":2}]"; String jsonString2 = "{\"data\":[{\"directors\":[\"普特鹏·普罗萨卡·那·萨克那卡林\",\"华森·波克彭\"],\"rate\":\"8.3\"},{\"directors\":[\"大卫·芬奇\"],\"rate\":\"8.7\"}]}"; JsonToObject jo = new JsonToObject(); List < map > listMap = jo.toMapOne(jsonString); List < map > listMap2 = jo.toMapTwo(jsonString2); //上面获取到了json的数据并且封装到list集合中去,并且list //里面封装的是map集合 for (Mapmap: listMap) { String rating = map.get("rating"); String rank = map.get("rank"); System.out.println("rating: " + rating); System.out.println("rank: " + rank); } for (Mapmap: listMap2) { String directors = map.get("directors"); String rate = map.get("rate"); System.out.println("directors: " + directors); System.out.println("rate: " + rate); } } }
运行的结果:
对于toMapOne里的函数调试的变量值情况:
json数组拼接合并可以通过使用addAll()方法,这是最简单的一种方式,开发人员可以去试试!最后大家如果想要了解更多json工具教程知识,敬请关注奇Q工具网。
推荐阅读: