使用Java进行Json数据的解析(对象数组的相互嵌套)
时间:2019-03-31
本文章向大家介绍使用Java进行Json数据的解析(对象数组的相互嵌套),主要包括使用Java进行Json数据的解析(对象数组的相互嵌套)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
这段时间我们在做一个英语翻译软件的小小小APP,涉及到了对Json数据的解析,所以特地来总结一下!
假设我们要对如下数据进行解析,其实在平时,返回的Json数据是很乱的,很难分清数据的关系,这是经过相关工具美化后的结果
{ "translation": [ "爱" ], "basic": { "us-phonetic": "lʌv", "phonetic": "lʌv", "uk-phonetic": "lʌv", "explains": [ "n. 恋爱;亲爱的;酷爱;喜爱的事物", "vt. 喜欢;热爱;爱慕", "vi. 爱", "n. (Love)人名;(英)洛夫" ] }, "web": [ { "value": [ "爱情", "爱", "爱" ], "key": "Love" }, { "value": [ "无尽的爱", "蓝色生死恋", "不了情" ], "key": "Endless Love" }, { "value": [ "早恋", "青春期恋爱", "初恋" ], "key": "puppy love" } ] }
我们把数据定义为一个字符串,加入转义字符之后就成了这样,有点乱是吧,所以我们根据上图分析就好啦。
Json数据说白了就是对象和数组的相互嵌套,那么我们开始吧!
String st = "{\"translation\":[\"爱\"],\"basic\":{\"us-phonetic\":\"lʌv\",\"phonetic\":\"lʌv\",\"uk-phonetic\":\"lʌv\",\"explains\":[\"n. 恋爱;亲爱的;酷爱;喜爱的事物\",\"vt. 喜欢;热爱;爱慕\",\"vi. 爱\",\"n. (Love)人名;(英)洛夫\"]},\"query\":\"love\",\"errorCode\":0,\"web\":[{\"value\":[\"爱情\",\"爱\",\"爱\"],\"key\":\"Love\"},{\"value\":[\"无尽的爱\",\"蓝色生死恋\",\"不了情\"],\"key\":\"Endless Love\"},{\"value\":[\"早恋\",\"青春期恋爱\",\"初恋\"],\"key\":\"puppy love\"}]}"; JSONObject str = JSONObject.fromObject(st); //json数据的最外层肯定是一个对象,参数为字符串 //对象str又分为3部分:translation,basic,web if(str.has("translation")){ JSONArray tr = str.getJSONArray("translation"); //translation是一个json数组 for(int i = 0 ;i<tr.size();i++){ //对数组元素进行遍历 System.out.println(tr.getString(i)); //因为元素的值是String类型的所以忽的值的方法是getString(index) } } //basic中有数组也有元素 if(str.has("basic")){ JSONObject us = str.getJSONObject("basic"); //对元素进行解析,并输出元素的值 System.out.print("美:[" + us.getString("us-phonetic") + "]\t"); JSONObject uk = str.getJSONObject("basic"); System.out.print("英:[" + us.getString("uk-phonetic") + "]\n"); JSONObject basic = str.getJSONObject("basic"); //先获得basic对象 JSONArray explain = basic.getJSONArray("explains"); //再获得basic对象下的explains数组 for(int i = 0;i<explain.size(); i++){ //对数组元素进行遍历 System.out.println(explain.getString(i)); } } if(str.has("web")){ //web是一个数组,每个数组元素又是三个Json对象 System.out.println("拓展:"); JSONArray web = str.getJSONArray("web"); for(int i = 0; i<web.size() ; i++ ){ //但是对象中又嵌套着数组 String t = web.getString(i); //遍历过程将web数组元素赋给String型变量 JSONObject we = JSONObject.fromObject(t); //通过String又得到每个元素的对象 if(we.has("key")){ System.out.print(we.getString("key")+"\t"); //得到对象中的元素 } if(we.has("value")){ JSONArray value = we.getJSONArray("value"); for(int x = 0 ; x<value.size() ;x++ ){ //遍历对象中嵌套的数组 System.out.print(value.getString(x)); //得到数组元素的值 if(x<value.size()-1){ System.out.print(";"); } } } System.out.println(); } }
到这里就解析完啦!
以上这篇使用Java进行Json数据的解析(对象数组的相互嵌套)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 猿实战14——前台类目之广告牌设置
- 猿实战15——关联你所不明白的前后台类目
- 完美解决方案-雪花算法ID到前端之后精度丢失问题
- 猿实战16——承运商之搭建你的运费基石
- List对象去重及按属性去重的8种方法-java基础总结第六篇
- 总结java创建文件夹的4种方法及其优缺点-JAVA IO基础总结第三篇
- 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇
- 总结java中文件拷贝剪切的5种方式-JAVA IO基础总结第五篇
- 总结java中删除文件或文件夹的7种方法-JAVA IO基础总结第四篇
- 总结java中创建并写文件的五种方式-JAVA IO基础总结第一篇
- 8成以上的java线程状态图都画错了,看看这个-图解java并发第二篇
- 特殊数据格式处理-JSON框架Jackson精解第2篇
- 序列化与反序列化核心用法-JSON框架Jackson精解第一篇
- 属性序列化自定义排序与字母表排序-JSON框架Jackson精解第3篇
- 【我在拉勾训练营学技术】mysql 索引面试再也不怕啦