Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java解析JSON数据_Java_Json_Api_Parsing - Fatal编程技术网

用Java解析JSON数据

用Java解析JSON数据,java,json,api,parsing,Java,Json,Api,Parsing,我想解析此页面中的一些数据: 我想解析的数据是标题,但我不确定如何提取数据。这就是我到目前为止所做的: 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

我想解析此页面中的一些数据:

我想解析的数据是标题,但我不确定如何提取数据。这就是我到目前为止所做的:

 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。有人能告诉我需要改变什么吗?谢谢。

如果您阅读了
JSONObject#get(String)
的javadoc,它实际上是
HashMap.get(String)
,它指出

返回:指定键映射到的值,如果 此映射不包含密钥的映射

您的JSON不包含键
time
的映射

编辑:

如果您的意思是
title
,而不是
time
,那么使用JSON的这个摘录

{"schedule":{"service":{"type":"radio","key":"radio1","title":"BBC Radio 1",...

首先需要将
计划
作为
JSONObject
,然后将
服务
作为
JSONObject
,然后将
标题
作为正常的
字符串
值。根据JSON值的类型应用不同的方法。

如果您阅读了
JSONObject#get(String)
的javadoc,它会声明

返回:指定键映射到的值,如果 此映射不包含密钥的映射

您的JSON不包含键
time
的映射

编辑:

如果您的意思是
title
,而不是
time
,那么使用JSON的这个摘录

{"schedule":{"service":{"type":"radio","key":"radio1","title":"BBC Radio 1",...

首先需要将
计划
作为
JSONObject
,然后将
服务
作为
JSONObject
,然后将
标题
作为正常的
字符串
值。根据JSON值的类型应用不同的方法。

使用类似的方法更好地理解数据结构,甚至可以使用库将数据映射到生成的对象。

使用类似的方法更好地理解数据结构,甚至可能使用库将数据映射到生成的对象

似乎在JSON中没有名为
time
的JSON对象。很抱歉,这是我的错误,time的意思是titleYou还假设每一行都是有效的JSON对象。我不确定如何从服务器返回结果。但是,如果对象被分成多行(这是有效的json),那么代码会将名为
title
的json对象分解为嵌套对象。您需要获取它上面的每个级别(包含它)才能检索它。您的JSON中似乎没有名为
time
的JSON对象。很抱歉,这是我的错误,time的意思是titleYou还假设每一行都是有效的JSON对象。我不确定如何从服务器返回结果。但是,如果对象被分成多行(这是有效的json),那么代码会将名为
title
的json对象分解为嵌套对象。你需要让它上面的每一个级别(包含它)来检索它。虽然这很有帮助,但它并不是对他的问题的真正回答。很明显,“时间”字段不在那里,问题是那里有什么,我认为生成java对象将帮助他更好地理解可用字段是什么,尽管这很有帮助,这并不是对他的问题的真正回答。很明显,“时间”字段不在那里,问题是那里有什么,相反,我认为生成java对象将帮助他更好地理解可用字段是什么