json解析(自动判断是jsonArray和jsonObject)
因为想做一个接口自动化框架,已经实现了接口的访问和连接及获取接口返回的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)的更多相关文章
- Json中判断是JSONArray还是JSONObject
聪明的人总是能想到别人会遇到的问题,提前给出解决方案. List propList = new ArrayList(); //装载数据的list JSONArray array= JSONArray. ...
- 接口测试入门(3)--使用httpClient进行登录用例操作/set-cookies验证/ List<NameValuePair>设置post参数/json解析
(最近学的都是很基础的接口测试,都是基于UI界面可见的接口,就是发请求,接收响应,分析返回的结果,校验,对共通模块进行封装,仅此而已,其实做自动化的思路基本都是如此,UI也是.) 现在开始用httpC ...
- JAVA自已设计JSON解析器
当然,有很多很好的JSON解析的JAR包,比如JSONOBJECT,GSON,甚至也有为我们测试人员而打造的JSONPATH,但我还是自已实现了一下(之前也实现过,现在属于重构). 思想是这样的,以这 ...
- 你必须掌握的Java基础:JSON解析工具-json-lib
一.简介 json-lib是一个Java类库,提供将Java对象,包括beans,maps,collections,java arrays和xml等转换成JSON,或者反向转换的功能. 二.准备 在 ...
- java 写一个JSON解析的工具类
上面是一个标准的json的响应内容截图,第一个红圈”per_page”是一个json对象,我们可以根据”per_page”来找到对应值是3,而第二个红圈“data”是一个JSON数组,而不是对象,不能 ...
- JSONArray和JSONObject的简单使用
一.为什么要使用JSONArray和JSONObject 1.后台 -->前台 能够把java对象和集合转化成json字符串格式,这样在前台的ajax方法中能够直接转化成json对象使用 ,从后 ...
- jsonObject jsonArray jsonTokener jsonStringer,json解析以及http请求获取josn数据并加以解析
JSON的定义: 一 种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的 支持),从而可以在不同平台间进行 ...
- java中转换json方式(JSONArray,JSONObject),json解析
package com.yunos.tv.video.resource.controller.web; import java.util.ArrayList; import java.util.Has ...
- android json解析(JSONObject方法实现)
今天刚刚学到json解析,看了一整天,大概了解到json就是你通过一个API(我用的聚合数据的API)发送一个请求,接着会收到json数据,比如说天气预报吧,他会给你发送一大段字符串,大概是未来几天的 ...
随机推荐
- live555源码分析----RSTPServer创建过程分析
最近五一回家,终于有机会能安静的看一下流媒体这方面相关的知识,准备分析live555的源码,接下来会把我读源码的过程记录成博客,以供其他的同路人参考. 因为再读源码的过程中,并不是一路顺着读下来,往往 ...
- oracle 密码默认180天过期
alter profile default limit password_life_time unlimited; alter user username identified by 'pwd';
- Java 对密码MD5
MD5,即"Message-Digest Algorithm 5(信息-摘要算法)": MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算 ...
- DAY9-python并发之多进程理论
一.背景知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所 ...
- Eclipse中,将jar包导入为User Library
项目右键 Properties -> bulid path -> Add Library -> User Library -> User Libraries -> New ...
- Android上 dip、dp、px、sp等单位说明
dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这个,不依赖像素. ...
- 【转】TinyMCE(富文本编辑器)
效果预览:http://www.tinymce.com/tryit/full.php [转]TinyMCE(富文本编辑器)在Asp.Net中的使用方法 转自:http://www.cnblogs.co ...
- cmake的一个编译报错
在一台新搭建的服务器上执行cmake的时候,报了如下错误: $ cmake ./ -- The C compiler identification is unknown -- The CXX comp ...
- [poj1703]Find them, Catch them(种类并查集)
题意:食物链的弱化版本 解题关键:种类并查集,注意向量的合成. $rank$为1代表与父亲对立,$rank$为0代表与父亲同类. #include<iostream> #include&l ...
- UIActionSheet(操作列表)
#import "AppDelegate.h" @interface AppDelegate ()<UIActionSheetDelegate> @end @imple ...