Java-从URL获取JSON数据

Java-从URL获取JSON数据,java,json,web,Java,Json,Web,我试图从中提取一个JSON文档,但没有成功地将JSON数据放入变量中。我所能做的就是通过以下方式获取页面的源代码(特别是第一行,但我理解为什么我只获取一行): 这是没有帮助的。 如果我能将JSON数据转换成字符串,我就可以将其输入JSONObject构造函数来构建JSONObject。如果我在python中执行此操作,我所要做的就是: concept = requests.get('http://api.conceptnet.io/c/en/' + theword).json() 但我无法找出

我试图从中提取一个JSON文档,但没有成功地将JSON数据放入变量中。我所能做的就是通过以下方式获取页面的源代码(特别是第一行,但我理解为什么我只获取一行):

这是没有帮助的。 如果我能将JSON数据转换成字符串,我就可以将其输入JSONObject构造函数来构建JSONObject。如果我在python中执行此操作,我所要做的就是:

concept = requests.get('http://api.conceptnet.io/c/en/' + theword).json()

但我无法找出Java中的等价物。我对web请求几乎没有经验,所以我非常感谢您的帮助。

尽管pythonic方法似乎简单得多,但在Java中它再简单不过了

HttpClient=HttpClient.newHttpClient();
HttpRequest请求=HttpRequest.newBuilder().uri(uri.create(“http://api.conceptnet.io/c/en/concept))build();
HttpResponse response=client.send(请求,HttpResponse.BodyHandlers.ofString());
JSONObject myObject=新的JSONObject(response.body());
System.out.println(myObject);//您的json对象
不要忘记添加下面的依赖项

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import org.json.JSONObject;

org.json
的依赖关系可以在这里找到:

尽管pythonic方法看起来容易得多,但在Java中再容易不过了

HttpClient=HttpClient.newHttpClient();
HttpRequest请求=HttpRequest.newBuilder().uri(uri.create(“http://api.conceptnet.io/c/en/concept))build();
HttpResponse response=client.send(请求,HttpResponse.BodyHandlers.ofString());
JSONObject myObject=新的JSONObject(response.body());
System.out.println(myObject);//您的json对象
不要忘记添加下面的依赖项

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import org.json.JSONObject;

可以在这里找到
org.json
的依赖关系:

在java中有多个获取json的选项

  • 如果您使用的是Java11,那么可以使用Java内置web客户端
  • 使用像OkHttp这样的库,您必须创建一个请求并将其提供给HttpClient

在java中获取json有多个选项

  • 如果您使用的是Java11,那么可以使用Java内置web客户端
  • 使用像OkHttp这样的库,您必须创建一个请求并将其提供给HttpClient

您可以使用ObjectMapper或JsonObject将响应主体解析为Json。因此,您的问题是将数据或将Json字符串更改为Json对象?@KunLun我正在尝试从网站获取数据。JSONObject有一个接受字符串的构造函数,可以将其转换为JSONObject。您可以使用ObjectMapper或JSONObject将响应体解析为Json。因此,您的问题是如何将数据或将Json字符串更改为Json对象?@KunLun我正在尝试从网站获取数据。JSONObject有一个构造函数,它接受字符串以转换为JSONObject。感谢您的帮助。你知道我在哪里可以下载OkHTTP的库吗?我似乎找不到任何官方消息来源。谢谢如果您使用的是maven或gradle之类的构建工具,您可以将其添加为依赖项。我找到了.jar并将其添加到了构建路径中,但当我运行与您类似的程序时,会出现NoClassDefFoundError。我查了一下,其中的一个例子是编译后删除一个.class文件,我没有这样做。你知道出了什么问题吗?不看代码和设置很难说,但是好像jar没有加载。谢谢你的帮助。你知道我在哪里可以下载OkHTTP的库吗?我似乎找不到任何官方消息来源。谢谢如果您使用的是maven或gradle之类的构建工具,您可以将其添加为依赖项。我找到了.jar并将其添加到了构建路径中,但当我运行与您类似的程序时,会出现NoClassDefFoundError。我查了一下,其中的一个例子是编译后删除一个.class文件,我没有这样做。你知道出了什么问题吗?不看代码和设置就很难说了,但是好像jar没有加载。

    HttpClient client = HttpClient.newHttpClient();
    HttpRequest request = HttpRequest.newBuilder()
      .uri(URI.create("http://api.conceptnet.io/c/en/concept"))
      .build();
    client.sendAsync(request, BodyHandlers.ofString())
      .thenApply(HttpResponse::body)
      .thenAccept(System.out::println)
      .join();


    Request request = new Request
       .Builder()
       .url("http://api.conceptnet.io/c/en/concept")
       .get()
       .build()

    OkHttpClient httpClient = client.newBuilder().build()
    Response response = httpClient.newCall(request).execute()
    System.out.println(response.body.string())