Java-从URL获取JSON数据
我试图从中提取一个JSON文档,但没有成功地将JSON数据放入变量中。我所能做的就是通过以下方式获取页面的源代码(特别是第一行,但我理解为什么我只获取一行): 这是没有帮助的。 如果我能将JSON数据转换成字符串,我就可以将其输入JSONObject构造函数来构建JSONObject。如果我在python中执行此操作,我所要做的就是: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() 但我无法找出
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())