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