Java学习-028-JSON 之二 -- 数据读取
JSON数据由 JSONObject、JSONArray、key_value 组合而成。通常来说,JSONObject 可以包含 JSONObject、JSONArray、key_value;JSONArray只能包含 JSONObject 的列表;key_value 为最小单元,且只能在 JSONObject 中获取。获取 JSONObject、JSONArray、key_value 三种数据的方法如下所示:
获取 JSONObject:JSONObject.getJSONObject(key),JSONArray.getJSONObject(index)
获取 JSONArray:JSONObject.getJSONArray(key)
获取 key_value:JSONObject.get(key)
若想通过上述方式获取数据,则需要先将满足 JSON 格式的数据转换为 JSONObject,才可进行后续的操作,转换的方法如下:
new JSONObject(jsonString)
同时,请自行下载此程序中相应的 jar 包,列表如下所示:
json-20141113.jar
jsoup-1.8.3.jar
testng-6.8.8.jar
下面以获取易迅网App首页大活动信息的标题为例,演示 JSON 数据的获取,源码如下敬请参阅!
/**
* Aaron.ffp Inc.
* Copyright (c) 2004-2015 All Rights Reserved.
*/
package com.demo;
import java.io.IOException;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import org.testng.log4testng.Logger;
/**
*
* @author Aaron.ffp
* @version V1.0.0: Jsoup com.demo ITestHome.java, 2015-8-31 19:03:15 Exp $
*/
public class ITestHome {
private String request = "http://mb.51buy.com/json.php?mod=home&act=config";
private Logger logger = Logger.getLogger(this.getClass());
private String message = "";
private Document doc;
private String test;
/**
* send request and get response
*
* @author Aaron.ffp
* @version V1.0.0: Jsoup com.demo ITestHome.java beforeTest, 2015-8-31 19:04:05 Exp $
*
* @throws IOException
*/
@BeforeTest
public void beforeTest() throws IOException{
this.doc = Jsoup.connect(this.request).data("appSource","android")
.userAgent("Jsoup demo")
.cookie("user", "Jsoup")
.timeout(5000).get();
this.test = doc.select("body").get(0).text();
}
/**
* Get JSON data
*
* @author Aaron.ffp
* @version V1.0.0: Jsoup com.demo ITestHome.java test_json, 2015-8-31 19:06:05 Exp $
*
*/
@Test
public void test_json(){
System.out.println("\n\n==================================== test_json");
System.out.println("获取响应请求信息:\n" + this.doc.toString() + "\n");
System.out.println("获取响应主体信息:\n" + this.test + "\n");
JSONObject jsonObject = new JSONObject(this.test);
System.out.println("响应主体转换为 JSONObject:\n" + jsonObject.toString() + "\n");
JSONArray ja = jsonObject.getJSONObject("data").getJSONArray("banner");
System.out.println("巨无霸数量:" + ja.length() + "\n巨无霸数据:" + ja.toString() + "\n");
if (ja != null) {
for (int i = 0; i < ja.length(); i++) {
JSONObject jo = ja.getJSONObject(i);
System.out.println("巨无霸 --> " + ja.getJSONObject(i).get("title") + " 相关数据:" + jo.toString());
}
}
}
}
执行结果如下所示:
至此, Java学习-028-JSON 之二 -- 数据读取 顺利完结,希望此文能够给初学 JSON 的您一份参考。
最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^
欢迎 【 留言 || 关注 || 打赏 】 。您的每一份心意都是对我的鼓励和支持!非常感谢!欢迎互加,相互交流学习!
作者:范丰平,本文链接:https://www.cnblogs.com/fengpingfan/p/4806800.html
Copyright @范丰平 版权所有,如需转载请标明本文原始链接出处,严禁商业用途! 我的个人博客链接地址:http://www.cnblogs.com/fengpingfan


浙公网安备 33010602011771号