Java 获取json元素URL NETBeans

Java 获取json元素URL NETBeans,java,json,url,netbeans,Java,Json,Url,Netbeans,我试图从JSON URL获取一个元素,但似乎没有任何效果。我试图创建一个对象来存储响应,然后访问它。它不起作用。这是我的密码: public class JavaApplication4 { public static void main(String[] args) { try { URL url = new URL("https://jsonplaceholder.typicode.com/todos/1"); Buf

我试图从JSON URL获取一个元素,但似乎没有任何效果。我试图创建一个对象来存储响应,然后访问它。它不起作用。这是我的密码:

public class JavaApplication4 {

    public static void main(String[] args) {
        try {
            URL url = new URL("https://jsonplaceholder.typicode.com/todos/1");
            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
            String line;

            while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
以下是运行该代码的输出:

{
  "userId": 1,
  "id": 1,
  "title": "delectus aut autem",
  "completed": false
}

我想得到各个键值。例如,我想获得“title”的值。

有几种第三方工具可以满足您的需要,但是您也可以使用JavaEE(有时被混淆为JSON-p)来处理URL的JSON数据,而不知道该数据的结构

下面是代码,它使用OP中的代码作为起点:

package com.unthreading;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.net.URL;

import javax.json.Json;
import javax.json.stream.JsonParser;

public class App {

    public static void main(String[] args) throws IOException {
        StringBuilder jsonData = new StringBuilder();
        URL url = new URL("https://jsonplaceholder.typicode.com/todos/1");

        try (BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));) {
            String line;
            while ((line = br.readLine()) != null) {
                jsonData.append(line);
            }
        }
        new App().processUnknownJson(jsonData.toString());
    }

    private void processUnknownJson(String jsonData) {
        System.out.println("jsonData:" + jsonData);
        JsonParser parser = Json.createParser(new StringReader(jsonData));
        while (parser.hasNext()) {
            JsonParser.Event event = parser.next();
            switch (event) {
            case START_ARRAY:
            case END_ARRAY:
            case START_OBJECT:
            case END_OBJECT:
            case VALUE_FALSE:
            case VALUE_NULL:
            case VALUE_TRUE:
                System.out.println(event.toString());
                break;
            case KEY_NAME:
                System.out.print(event.toString() + " " + parser.getString() + " - ");
                break;
            case VALUE_STRING:
            case VALUE_NUMBER:
                System.out.println(event.toString() + " " + parser.getString());
                break;
            default:
                System.out.println("Unexpected event: " + event.toString());
            }
        }
    }
}
这是输出,显示从URL返回的JSON字符串,以及将该字符串解析为键/值对的结果:

jsonData:{  "userId": 1,  "id": 1,  "title": "delectus aut autem",  "completed": false}
START_OBJECT
KEY_NAME userId - VALUE_NUMBER 1
KEY_NAME id - VALUE_NUMBER 1
KEY_NAME title - VALUE_STRING delectus aut autem
KEY_NAME completed - VALUE_FALSE
END_OBJECT
解析代码取自Oracle示例:

我使用以下
pom.xml
将应用程序创建为一个简单的Maven项目:

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.unthreading</groupId>
    <artifactId>myjsonparser</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>myjsonparser</name>
    <url>http://maven.apache.org</url>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>11</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
    </properties>
    <dependencies>
        <!-- https://mvnrepository.com/artifact/javax.json/javax.json-api -->
        <dependency>
            <groupId>javax.json</groupId>
            <artifactId>javax.json-api</artifactId>
            <version>1.1.4</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>javax.json</artifactId>
            <version>[1.1.2,)</version>
        </dependency>
    </dependencies>
</project>

4.0.0
com.unthreading
myjsonparser
0.0.1-快照
罐子
myjsonparser
http://maven.apache.org
UTF-8
11
${java.version}
${java.version}
javax.json
javax.json-api
1.1.4
玻璃鱼
javax.json
[1.1.2,)

有几种第三方工具可以满足您的需要,但您也可以使用Java EE(有时被混淆为JSON-p)来处理URL的JSON数据,而不知道该数据的结构

下面是代码,它使用OP中的代码作为起点:

package com.unthreading;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.net.URL;

import javax.json.Json;
import javax.json.stream.JsonParser;

public class App {

    public static void main(String[] args) throws IOException {
        StringBuilder jsonData = new StringBuilder();
        URL url = new URL("https://jsonplaceholder.typicode.com/todos/1");

        try (BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));) {
            String line;
            while ((line = br.readLine()) != null) {
                jsonData.append(line);
            }
        }
        new App().processUnknownJson(jsonData.toString());
    }

    private void processUnknownJson(String jsonData) {
        System.out.println("jsonData:" + jsonData);
        JsonParser parser = Json.createParser(new StringReader(jsonData));
        while (parser.hasNext()) {
            JsonParser.Event event = parser.next();
            switch (event) {
            case START_ARRAY:
            case END_ARRAY:
            case START_OBJECT:
            case END_OBJECT:
            case VALUE_FALSE:
            case VALUE_NULL:
            case VALUE_TRUE:
                System.out.println(event.toString());
                break;
            case KEY_NAME:
                System.out.print(event.toString() + " " + parser.getString() + " - ");
                break;
            case VALUE_STRING:
            case VALUE_NUMBER:
                System.out.println(event.toString() + " " + parser.getString());
                break;
            default:
                System.out.println("Unexpected event: " + event.toString());
            }
        }
    }
}
这是输出,显示从URL返回的JSON字符串,以及将该字符串解析为键/值对的结果:

jsonData:{  "userId": 1,  "id": 1,  "title": "delectus aut autem",  "completed": false}
START_OBJECT
KEY_NAME userId - VALUE_NUMBER 1
KEY_NAME id - VALUE_NUMBER 1
KEY_NAME title - VALUE_STRING delectus aut autem
KEY_NAME completed - VALUE_FALSE
END_OBJECT
解析代码取自Oracle示例:

我使用以下
pom.xml
将应用程序创建为一个简单的Maven项目:

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.unthreading</groupId>
    <artifactId>myjsonparser</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>myjsonparser</name>
    <url>http://maven.apache.org</url>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>11</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
    </properties>
    <dependencies>
        <!-- https://mvnrepository.com/artifact/javax.json/javax.json-api -->
        <dependency>
            <groupId>javax.json</groupId>
            <artifactId>javax.json-api</artifactId>
            <version>1.1.4</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>javax.json</artifactId>
            <version>[1.1.2,)</version>
        </dependency>
    </dependencies>
</project>

4.0.0
com.unthreading
myjsonparser
0.0.1-快照
罐子
myjsonparser
http://maven.apache.org
UTF-8
11
${java.version}
${java.version}
javax.json
javax.json-api
1.1.4
玻璃鱼
javax.json
[1.1.2,)
尝试遵循此url:。我认为这将解决您的问题。尝试遵循此url:。我认为这将解决您的问题。