有没有最简单的方法从 URL 解析 JSON?我使用 Gson 找不到任何有用的示例。
原文由 Peril 发布,翻译遵循 CC BY-SA 4.0 许可协议
GSON 有一个带有 Reader 对象的构建器: fromJson(Reader json, Class classOfT) 。
这意味着您可以从 URL 创建一个 Reader,然后将其传递给 Gson 以使用流并进行反序列化。
只有 三行 相关代码。
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Map;
import com.google.gson.Gson;
public class GsonFetchNetworkJson {
public static void main(String[] ignored) throws Exception {
URL url = new URL("https://httpbin.org/get?color=red&shape=oval");
InputStreamReader reader = new InputStreamReader(url.openStream());
MyDto dto = new Gson().fromJson(reader, MyDto.class);
// using the deserialized object
System.out.println(dto.headers);
System.out.println(dto.args);
System.out.println(dto.origin);
System.out.println(dto.url);
}
private class MyDto {
Map<String, String> headers;
Map<String, String> args;
String origin;
String url;
}
}
如果您碰巧收到 403 错误代码,并且端点在其他方面工作正常(例如使用
curl
或其他客户端),那么可能的原因可能是端点需要一个User-Agent
标头和默认情况下 Java URLConnection 没有设置它。一个简单的解决方法是在文件顶部添加例如System.setProperty("http.agent", "Netscape 1.0");
。原文由 ccpizza 发布,翻译遵循 CC BY-SA 4.0 许可协议
8 回答6.5k 阅读
4 回答701 阅读✓ 已解决
2 回答3.4k 阅读
3 回答1.9k 阅读✓ 已解决
1 回答2.2k 阅读✓ 已解决
1 回答2.1k 阅读✓ 已解决
1 回答972 阅读✓ 已解决
然后你需要解析它(在这里你有一些选择)。
输出: