java解析多层嵌套json字符串

java分别解析下面两个json字符串

package jansonDemo;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;public class TestJSON {/*** JSON实际上也是键值对("key":"value")* key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)* value如果是字符串,用jsonobj.getString("key")获取* value如果是数  字,用jsonobj.getIntValue("key"),jsonobj.getFloatValue("key"),jsonobj.getInteger("key")等基本数据类型及其包装类的方法获取* value如果是布尔值,用jsonobj.getBoolean("key"),jsonobj.getBooleanValue("key")获取* value如果是数  组,用jsonobj.getJSONArray("key")获取* value如果是Object对象,用jsonobj.get("key"),获取* value如果是JSONObject对象,用jsonobj.getJSONObject("key")获取*//*** 该方法用于将已有的json字符串转换为json对象,并取出该对象中相应的key对应的value值* 将已有的字符串转换成jsonobject,用JSON.parseObject(jsonStr)方法* json中只要是{}就代表一个JSONObject,[]就代表一个JSONArray* 获取JSONObject对象用JSONObject jsonobject.getJSONObject("key")方法* 获取JSONArray对象用JSONObject jsonobject.getJSONArray("key")方法*/private static void strWritedToJSONObject() {//以下是一个json对象中嵌套一个json子对象String myJsonObj = "{\n" +"    \"name\":\"runoob\",\n" +"    \"alexa\":10000,\n" +"    \"sites\": {\n" +"        \"site1\":\"www.runoob.com\",\n" +"        \"site2\":\"m.runoob.com\",\n" +"        \"site3\":\"c.runoob.com\"\n" +"    }\n" +"}";JSONObject jsonobj = JSON.parseObject(myJsonObj); //将json字符串转换成jsonObject对象/***获取JSONObject中每个key对应的value值时,可以根据实际场景中想得到什么类型就分别运用不到的方法***/System.out.println(jsonobj.get("name")); //取出name对应的value值,得到的是一个objectSystem.out.println(jsonobj.getString("name")); //取出name对应的value值,得到的是一个StringSystem.out.println(jsonobj.getIntValue("alexa")); //取出name对应的value值,得到的是一个intSystem.out.println(jsonobj.get("sites")); //取出sites对应的value值,得到的是一个objectSystem.out.println(jsonobj.getString("sites"));System.out.println(jsonobj.getJSONObject("sites")); //取出sites对应的value值,得到一个JSONObject子对象System.out.println(jsonobj.getJSONObject("sites").getString("site2")); //取出嵌套的JSONObject子对象中site2对应的value值,必须用getJSONObject()先获取JSONObject/*** 以下是一个json对象中包含数组,数组中又包含json子对象和子数组*/String myJsonObj2 = "{\n" +"    \"name\":\"网站\",\n" +"    \"num\":3,\n" +"    \"sites\": [\n" +"        { \"name\":\"Google\", \"info\":[ \"Android\", \"Google 搜索\", \"Google 翻译\" ] },\n" +"        { \"name\":\"Runoob\", \"info\":[ \"菜鸟教程\", \"菜鸟工具\", \"菜鸟微信\" ] },\n" +"        { \"name\":\"Taobao\", \"info\":[ \"淘宝\", \"网购\" ] }\n" +"    ]\n" +"}";JSONObject jsonobj2 = JSON.parseObject(myJsonObj2); //将json字符串转换成jsonObject对象System.out.println(jsonobj2.get("sites"));System.out.println(jsonobj2.getString("sites"));System.out.println(jsonobj2.getJSONArray("sites")); //取出sites对应的value值,得到一个JSONOArray对象//System.out.println(jsonobj2.getJSONObject("sites")); 不能用该方法,因为sites是一个JSONOArray对象//取出json对象中sites对应数组中第一个json子对象的值System.out.println(jsonobj2.getJSONArray("sites").getJSONObject(0)); //得到结果:{"name":"Google","info":["Android","Google 搜索","Google 翻译"]}System.out.println(jsonobj2.getJSONArray("sites").get(0));System.out.println(jsonobj2.getJSONArray("sites").getString(0));//取出json对象中sites对应数组中第一个json子对象下面info对应的嵌套子数组值System.out.println(jsonobj2.getJSONArray("sites").getJSONObject(0).getJSONArray("info")); //得到结果:["Android","Google 搜索","Google 翻译"]//取出json对象中sites对应数组中第一个json子对象下面info对应的嵌套子数组中第二个值System.out.println(jsonobj2.getJSONArray("sites").getJSONObject(0).getJSONArray("info").getString(1)); //得到结果:Google 搜索//依次取出json对象中sites对应数组中的值JSONArray array = jsonobj2.getJSONArray("sites");getJsonArrayItem(array);//依次取出json对象中sites对应数组中第二个json子对象下面info对应的嵌套子数组值JSONArray arr = jsonobj2.getJSONArray("sites").getJSONObject(1).getJSONArray("info");getJsonArrayItem(arr);}/*** 手动添加对象到一个JSONObject*/private static void writeStrToJSONObject() {JSONObject jsonObject = new JSONObject();jsonObject.put("name","tom");jsonObject.put("age",20);JSONArray jsonArray = new JSONArray();JSONObject jsonArrayObject1 = new JSONObject();jsonArrayObject1.put("name","alibaba");jsonArrayObject1.put("info","www.alibaba.com");JSONObject jsonArrayObject2 = new JSONObject();jsonArrayObject2.put("name","baidu");jsonArrayObject2.put("info","www.baidu.com");jsonArray.add(jsonArrayObject1);jsonArray.add(jsonArrayObject2);jsonObject.put("sites",jsonArray);System.out.println(jsonObject);}/*** 将字符串转为JSONArray*/private static void strToJsonArray() {String arrayStr = "[\n" +"        {\n" +"            \"name\":\"alibaba\",\n" +"            \"info\":\"www.alibaba.com\"\n" +"        },\n" +"        {\n" +"            \"name\":\"baidu\",\n" +"            \"info\":\"www.baidu.com\"\n" +"        }\n" +"    ]";JSONArray array = JSON.parseArray(arrayStr);System.out.println(array);}/*** 依次取出JSONArray中的值*/private static void getJsonArrayItem(JSONArray array) {for (int i=0; i<array.size(); i++) {System.out.println(array.get(i));}}//测试类public static void main(String[] args) {strWritedToJSONObject();//writeStrToJSONObject();//strToJsonArray();}}

java解析多层嵌套json字符串相关推荐

  1. python 处理json多层嵌套_python解析多层嵌套json

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 这样多层json结构已完成. 补充拓展:python 读取多层嵌套的json数据 ...

  2. java解析与生成json数据的四种方式,比如将json字符串转为json对象或json对象转为json字符串

    文章目录 1. 详说json 1.1 何为json 1.2 json语法 2. Java解析与生成JSON的四种方式 2.1 传统方式 2.2 利用Jackson方式 2.3 利用Gson方式 2.4 ...

  3. 多层嵌套json解析

    多层嵌套json解析-- com.jayway.jsonpath.JsonPath public class FormDefineHelper {private FormDefineHelper() ...

  4. python解析多层嵌套json_Python爬虫解析多个嵌套JSON,多级,json

    Python爬虫解析多级嵌套json 最近刚接触Python爬虫,正好最近肺炎在全国蔓延,所以准备从网站爬取肺炎实时数据,并解析自己想要的数据.获取json数据网址为 https://m.look.3 ...

  5. 多层嵌套json转换为Map再转换为单层

    多层嵌套json转换为Map再转换为单层 最近在实习的时候,需要将多层嵌套的json转换为单层的json.并且把json进行格式化.于是参照网上的网上的方法使用谷歌的gson利用递归的实现了多层jso ...

  6. ASP.NET提取多层嵌套json数据的方法

    ASP.NET提取多层嵌套json数据的方法 本文实例讲述了ASP.NET利用第三方类库Newtonsoft.Json提取多层嵌套json数据的方法,具体例子如下. 假设需要提取的json字符串如下: ...

  7. 迭代解决多层嵌套json 转map

    最近工作需要用到json 转map ,在网上看到了一个方法,但并不能解决多层嵌套json,在此对这个方法进行了迭代处理,解决这个问题 import net.minidev.json.{JSONObje ...

  8. 字符串不替代_使用第三方库demjson解析不规范的json字符串

    Json在编程中是一种轻量级的文件格式,在本地开发或者web开发中使用较多.JSON(JavaScript Object Notation,JavaScript对象表示法,读作/ˈdʒeɪsən/)是 ...

  9. 讯飞实时语音转写 python3.6.1 可完美运行 解析返回的json字符串 输出所获语音文字

    百度语音识别对录音要求较高(可能是我的问题,sdk和在线api都试过了(滑稽保命)),失败后选择讯飞语音,官方提供的文档是python2版本的 ,经过修改后可在python3中运行 ,解析返回的jso ...

最新文章

  1. 多机多卡训练基本原理
  2. 系统由单体架构到微服务架构到底是如何演进的?
  3. JZOJ 2256. 【BZOJ 2256】【ZJOI 2008】树的统计
  4. PTA浙大版python程序设计题目集--第2章-4 特殊a串数列求和 (20 分)
  5. Linux 中挖矿病毒处理过程
  6. 第五章:数据库交换开发篇
  7. 重磅独家 | 腾讯AI Lab AAAI18现场陈述论文:用随机象限性消极下降算法训练L1范数约束模型
  8. IP5的接口模式运行测试
  9. 江苏高中计算机考试成绩查询系统,江苏2018普通高中信息技术学业水平测试成绩查询系统已开通...
  10. 上市公司回购股票是利好还是利空?
  11. 传播路径图调查2013年初
  12. W25Q16 driver(转)
  13. IDEA常用快捷键汇总
  14. js以excel为模板的打印
  15. arcgis根据7参转坐标_ArcGIS和COORD进行坐标七参数转换国家2000的方法
  16. Ocata Neutron代码分析(一)——Neutron API启动过程分析
  17. python的print函数用逗号分隔时输出不用空格_python print 按逗号或空格分隔的方法...
  18. 预防跌倒-笑做“不倒翁”
  19. yolov5 6.1官方模板TensorRT加速保姆级图文教程
  20. fcpx插件:stupid raisins info pop for mac(27个标题字幕栏)

热门文章

  1. sklearn机器学习实例
  2. Java LocalDate类| minusWeeks()方法与示例
  3. js手机号中间四位_11位手机号码隐藏中间四位数,学会Substitute函数一键搞定!...
  4. 狂神说es笔记_人教版七上英语Unit5电子课本音频+课堂笔记+课后同步习题
  5. 河南招教考试计算机专业知识,河南教师招聘考试《计算机网络技术基础》知识点归纳七...
  6. Java ClassLoader findLibrary()方法与示例
  7. 轮询锁使用时遇到的问题与解决方案!
  8. 第 6-6 课:消息队列面试题汇总
  9. Oracle官方推荐的性能测试工具!简单、精准又直观!
  10. 99%的程序员都在用Lombok,原理竟然这么简单?我也手撸了一个!|建议收藏