使用Java进行Json数据的解析(对象数组的相互嵌套)

发布时间 - 2026-01-11 02:54:55    点击率:

这段时间我们在做一个英语翻译软件的小小小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数据的解析(对象数组的相互嵌套)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# Java进行Json数据解析  # Java 从json提取数组并转换为list的操作方法  # Java如何将String转换成json对象或json数组  # Java获取json数组对象的实例讲解  # java提取json中某个数组的所有值方法  # java实现二维数组转json的方法示例  # java解析json数组方式  # 遍历  # 是一个  # 洛夫  # 给大家  # 早恋  # 象中  # 这是  # 也有  # 不了情  # 又是  # 很难  # 中有  # 这段  # 希望能  # 做一个  # 英语  # 要对  # 这篇  # 说白了  # 好啦 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  微信推文制作网站有哪些,怎么做微信推文,急?  如何在搬瓦工VPS快速搭建网站?  Internet Explorer官网直接进入 IE浏览器在线体验版网址  JavaScript如何实现音频处理_Web Audio API如何工作?  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  微信小程序 闭包写法详细介绍  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  Laravel如何使用Collections进行数据处理?(实用方法示例)  制作企业网站建设方案,怎样建设一个公司网站?  如何在建站宝盒中设置产品搜索功能?  实例解析Array和String方法  Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  Linux安全能力提升路径_长期防护思维说明【指导】  Laravel如何使用Blade组件和插槽?(Component代码示例)  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  JavaScript如何实现类型判断_typeof和instanceof有什么区别  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  如何在景安服务器上快速搭建个人网站?  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  如何在宝塔面板创建新站点?  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  javascript日期怎么处理_如何格式化输出  如何基于云服务器快速搭建个人网站?  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  bootstrap日历插件datetimepicker使用方法  如何在阿里云ECS服务器部署织梦CMS网站?  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  JS实现鼠标移上去显示图片或微信二维码  想要更高端的建设网站,这些原则一定要坚持!  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  Android仿QQ列表左滑删除操作  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  大同网页,大同瑞慈医院官网?  JS弹性运动实现方法分析  如何在万网自助建站平台快速创建网站?  如何在Tomcat中配置并部署网站项目?  如何在阿里云通过域名搭建网站?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  Bootstrap整体框架之CSS12栅格系统  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?