因为想做一个接口自动化框架,已经实现了接口的访问和连接及获取接口返回的json数据,但json数据的解析是个麻烦的事情,所以写一个简单的版本记录一下。后续会进行优化,实现方法分离以及自动识别循环解析返回想要校验的value

解析json需要导入的包:

json-lib-***.jar

commons-beanutils-***.jar

commons-collections-***.jar

commons-lang-***.jar

commons-logging-***.jar

ezmorph-***.jar

好了,直接上代码:

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.util.JSONTokener;
import org.apache.commons.io.FileUtils; import java.io.File;
import java.io.IOException;
import java.util.Iterator; public class JSONObjectTest {
public static void main(String[] args){
try {
File file = new File("D:\\IdeaProjects\\Solution\\src\\demo.json");
String content = FileUtils.readFileToString(file);
JSONObject obj1 = JSONObject.fromObject(content);
Iterator iterator = obj1.keys();
while(iterator.hasNext()){
String key = (String)iterator.next();
String value = obj1.getString(key);
Object listArray = new JSONTokener(obj1.getString(key)).nextValue();
if(listArray instanceof JSONArray){
JSONArray jsonArray = (JSONArray)listArray;
for(int i=0;i<jsonArray.size();i++){
JSONObject everyParam = jsonArray.getJSONObject(i);
System.out.println(everyParam);
}
}else if(listArray instanceof JSONObject){
JSONObject jsonObject = (JSONObject)listArray;
System.out.println(jsonObject);
}else{
System.out.println(value);
} }
} catch (IOException e) {
e.printStackTrace();
} }
} 其中demo.json文件的内容:
{
"age":6,
"name":{"nickname":"xinxin","realname":"www"},
"department":"QA",
"is_student":false,
"hobbies":[
{"dancing":"true"},
{"badminton":"true"}]
} 程序运行打印结果:

6
{"nickname":"xinxin","realname":"www"}
QA
false
{"dancing":"true"}
{"badminton":"true"}

ps:本来直接使用obj1.getString(key),就可以打印json中所有的内容,但我想把是jsonArray的也单独打印,所以写了这个,后续完善分离的代码

json解析(自动判断是jsonArray和jsonObject)的更多相关文章

  1. Json中判断是JSONArray还是JSONObject

    聪明的人总是能想到别人会遇到的问题,提前给出解决方案. List propList = new ArrayList(); //装载数据的list JSONArray array= JSONArray. ...

  2. 接口测试入门(3)--使用httpClient进行登录用例操作/set-cookies验证/ List<NameValuePair>设置post参数/json解析

    (最近学的都是很基础的接口测试,都是基于UI界面可见的接口,就是发请求,接收响应,分析返回的结果,校验,对共通模块进行封装,仅此而已,其实做自动化的思路基本都是如此,UI也是.) 现在开始用httpC ...

  3. JAVA自已设计JSON解析器

    当然,有很多很好的JSON解析的JAR包,比如JSONOBJECT,GSON,甚至也有为我们测试人员而打造的JSONPATH,但我还是自已实现了一下(之前也实现过,现在属于重构). 思想是这样的,以这 ...

  4. 你必须掌握的Java基础:JSON解析工具-json-lib

    一.简介  json-lib是一个Java类库,提供将Java对象,包括beans,maps,collections,java arrays和xml等转换成JSON,或者反向转换的功能. 二.准备 在 ...

  5. java 写一个JSON解析的工具类

    上面是一个标准的json的响应内容截图,第一个红圈”per_page”是一个json对象,我们可以根据”per_page”来找到对应值是3,而第二个红圈“data”是一个JSON数组,而不是对象,不能 ...

  6. JSONArray和JSONObject的简单使用

    一.为什么要使用JSONArray和JSONObject 1.后台 -->前台 能够把java对象和集合转化成json字符串格式,这样在前台的ajax方法中能够直接转化成json对象使用 ,从后 ...

  7. jsonObject jsonArray jsonTokener jsonStringer,json解析以及http请求获取josn数据并加以解析

    JSON的定义: 一 种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的 支持),从而可以在不同平台间进行 ...

  8. java中转换json方式(JSONArray,JSONObject),json解析

    package com.yunos.tv.video.resource.controller.web; import java.util.ArrayList; import java.util.Has ...

  9. android json解析(JSONObject方法实现)

    今天刚刚学到json解析,看了一整天,大概了解到json就是你通过一个API(我用的聚合数据的API)发送一个请求,接着会收到json数据,比如说天气预报吧,他会给你发送一大段字符串,大概是未来几天的 ...

随机推荐

  1. 模块化方案esl以及amd的依赖方式

    来自AMD设计思想的总结和思考 在之前了解es6模块化的时候有遇到过依赖循环的问题,在es6中对于模块是引用性的,而当时于es6模块化做对比的commonjs(CMD规范)对于模块是值类型(会将其缓存 ...

  2. Oracle user,role,profile常规操作--用户,权限,角色,配置文件

    Oracle user,role,profile常规操作--用户,权限,角色,配置文件 1 权限查询 1查看所有用户 SQL> select username,account_status,lo ...

  3. Laravel 在 with 查询中只查询个别字段

    在使用 Laravel 的关联查询中,我们经常使用 with 方法来避免 N+1 查询,但是 with 会将目标关联的所有字段全部查询出来,对于有强迫症的我们来说,当然是不允许的. 这时候我们可以使用 ...

  4. 跨resetlogs不完全恢复- oracle自动reset错误incarnation

    在做oracle跨resetlogs的不完全恢复时,如果未删除flashback area的控制文件自动备份,那么Oracle可能会从控制文件自动备份中自动探测到incarnation信息,并重置in ...

  5. Recovery of DISKGROUP in VXVM (ZT)

    http://gurkulindia.com/main/2012/03/recovery-of-diskgroup-in-vxvm-veritas-volume-manager/# Since lon ...

  6. tomcat urlwrite报错

    十二月 26, 2017 2:15:30 下午 org.apache.catalina.core.ApplicationContext logINFO: org.tuckey.web.filters. ...

  7. hadoop再次集群搭建(2)-配置免秘钥ssh登录

    SSH对于大多程序员都不陌生,目前主流的云服务提供上也是通过SSH来提供链接的安全保障,比如AWS通过使用下载的私钥(private key)实现与EC2实例安全连接.GitHub通过上传的公钥(pu ...

  8. 使用百度地图SDK 这是之前版本 现在的sdk v2-1-2使用方法完全改变

    1.添加BMapApiDemoApp.java 2.AndroidManifest文件  application里添加  android:name=".ui.BMapApiDemoApp&q ...

  9. POJ 2176 Folding(区间DP)

    题意:给你一个字符串,请把字符串压缩的尽量短,并且输出最短的方案. 例如:AAAAA可压缩为5(A), NEERCYESYESYESNEERCYESYESYES可压缩为2(NEERC3(YES)). ...

  10. 开发同事 Linux 实用基本操作

    Linux 有复杂的体系,有很多的命令,开发同事日常开发时,不像运维同事需要熟练使用很多命令. 下面记录下我在工作中,常用的基本命令: 一 日志查看 对于开发同事来说,日常工作中,Linux 中最常用 ...