Java 解析json字符串

今天在网上看到了一个音乐接口,刚巧一些音乐需要版权才可以听,于是就准备折腾一下……

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Scanner;
import org.json.JSONArray;
import org.json.JSONObject;

public class Main
{

    public static void main(String[] args)
    {
        System.out.println("请输入歌曲名称\\歌手名");
        Scanner scan = new Scanner(System.in);
        String scanStr = scan.next();
        System.out.println("获取数据中");
        parseHtml(scanStr);

    }

    private static void parseHtml(String getText)
    {
        try
        {
            URL url = new URL("http://luaapp.cn/music.search.json?key=" + getText + "&page=1");
            InputStream in = url.openStream();//openStream()方法访问Internet
            InputStreamReader isr = new InputStreamReader(in);
            BufferedReader bufr = new BufferedReader(isr);//读取源码
            StringBuilder sb = new StringBuilder();
            String str;
            while ((str = bufr.readLine()) != null)
            {
                sb.append(str);// 将获取的源码拼接在一起
            }
            String json =sb.toString();
            JSONObject jsonObj= new JSONObject(json);//首先取得一个JSONObject
            JSONArray jsonArray = jsonObj.optJSONArray("list");//使用optJSONArray("名称"),得到一个集合
            for (int index = 0,count = jsonArray == null ?0: jsonArray.length();index < count;index++)//遍历集合中的所有元素
            {
                JSONObject jsonObj2 = jsonArray.optJSONObject(index);
                if (jsonObj2 == null)
                {
                    continue;
                }
                String songMessage = jsonObj2.optString("song");
                System.out.println(songMessage);
            }
            bufr.close();
            isr.close();
            in.close();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

上例首先创建对象url,并通过url.openStream()方法打开输入流获取InputStreamReader对象,再由此对象创建BufferedReader对象bufr,从bufr中读取数据即可得到url所指定的资源文件。

想做成app的朋友,自己直接调用parseHtml方法,把获取的数据放到list里面,进行一波”猛如虎”的操作就OK了。

你可能感兴趣的:(安卓)