java - 从以不必要的数据开头的 URL 中读取 Java 中的 JSON

标签 java json parsing

我想处理以我不需要的对象开始的 JSON 数据。

这里有 URL:

我一直在尝试调整下一个代码,但我不知道如何避免第一个对象(摘要)并获取第二个对象(资源)。

如果我想从“资源”的每个对象中一一获取里面的所有数据(例如,显示“nombre-calle”、“tipo-via”...)。

package leerjson;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class LeerJSON {

    public static void main(String[] args) throws ParseException {
        JSONParser parser = new JSONParser();

        try {        
            URL oracle = new URL("http://datos.santander.es/api/rest/datasets/callejero_calles.json?items=819"); // URL to Parse
            URLConnection yc = oracle.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));

            String inputLine; 
            in.readLine();
            while ((inputLine = in.readLine()) != null) {   
                JSONArray a = (JSONArray) parser.parse(inputLine);

                // Loop through each item
                for (Object o : a) {
                    JSONObject datos = (JSONObject) o;
                    System.out.println(datos);
                }
            }
            in.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        }  
    }  

更新: 一旦看到Enra64的答案,我不知道如何使用getJSONArray和getJSONObject,因为它不是一个方法。我已将 json-simple-1.1.1.jar 添加到我的项目中,但它不起作用。先感谢您!这是我的新代码:

URL oracle = new URL("http://datos.santander.es/api/rest/datasets/callejero_calles.json?items=819"); // URL to Parse
   URLConnection yc = oracle.openConnection();
   BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));

   String inputLine = in.readLine();

   JSONObject a = (JSONObject) parser.parse(inputLine);
   JSONArray resources = a.getJSONArray("resources");

   for (int i = 0; i < resources.length(); i++) {
        resources.getJSONObject(i);
   }

最佳答案

选择资源对象,如下所示:

JSONObject a = (JSONObject) parser.parse(inputLine);
JSONArray resources = a.getJSONArray("resources");

然后循环它:

for (int i = 0; i < resources.length(); i++) {
  resources.getJSONObject(i);
}

关于java - 从以不必要的数据开头的 URL 中读取 Java 中的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48253370/

相关文章:

java - 如何使用键盘输入设置类字符串变量?

java - 如何订购此链接列表?

python - Pandas 数据框到没有索引的json

java - Android - 如何从 api.烂番茄 解析 JSONObject 和 JSONArray

c# - 在 C# 窗体中访问 javascript 方法(没有 Webbrowser 或 DOM)

xml - 解析器从 RDF/XML 网页中为我的 Java 网络爬虫提取 URI

java - RMIC 无法找到类,尽管它就在那里

Java - 从HashMap单键多值取键(反向映射)

javascript - 将数据 json 字符串传递给数字 Vue.js

java - 在 Java 中,如何将单个字段的多个值解析为 String 数组?