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 的您一份参考。

最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^

posted @ 2015-09-14 15:31  范丰平  Views(465)  Comments(0Edit  收藏  举报