我想解析此页面中的一些数据: http://www.bbc.co.uk/radio1/programmes/schedules/england/2013/03/1.json
我要解析的数据是标题,但我不确定如何提取数据。这是我到目前为止所做的:
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
public class Test
{
public Test() { }
public static void main(String[] args)
{
URL url;
HttpURLConnection connection = null;
InputStream is = null;
JSONParser parser = new JSONParser();
try
{
url = new URL("http://www.bbc.co.uk/radio1/programmes/schedules/england/2013/03/1.json");
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
is = connection.getInputStream();
BufferedReader theReader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String reply;
while ((reply = theReader.readLine()) != null)
{
System.out.println(reply);
Object obj = parser.parse(reply);
JSONObject jsonObject = (JSONObject) obj;
String title = (String) jsonObject.get("time");
System.out.println(title);
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}
这只返回null。谁能告诉我需要改变什么?感谢。
答案 0 :(得分:5)
如果您阅读JSONObject#get(String)
的实际为HashMap.get(String)
的javadoc,则说明
返回:指定键映射到的值,或 null if 此地图不包含密钥的映射
您的JSON不包含密钥time
的映射。
编辑:
如果您的意思是title
而不是time
,请使用此JSON的摘录
{"schedule":{"service":{"type":"radio","key":"radio1","title":"BBC Radio 1",...
您首先需要schedule
作为JSONObject
,然后service
作为JSONObject
,然后title
作为正常String
值。根据JSON值的类型以不同方式应用它。
答案 1 :(得分:0)
使用JSONGen之类的内容来更好地理解您的数据结构,甚至可以使用google-gson库将数据映射到生成的对象