所以我正在开发一个 Windows 应用程序来练习我的编码并扩展我的知识,但我在使用 Riot Games 的 JSON 时遇到了一个大问题。我不太确定要查找的术语,因为我从未学习过如何使用 JSON,因此我使用 google-fu 和 stack-overflow 作为引用以及各种文档取得了相当大的进展。
我使用输入流和输出流收到了以下所有数据。但这都是未格式化的 JSON,没有缩进,非常难以阅读。我假设我使用了错误的工具来完成这里的任务,它只是读取字符并打印它们。
我的问题是,我应该使用什么语法将 JSON 从 URL 导入到 JSON 文件。那么我应该如何将该 JSON 转换或读取为多个不同的 Java 对象,以便我可以在代码中使用这些数据。
使用 Gson 是我已经探索过的一个选项,但我对它们的语法不太满意,如果可以的话,我宁愿避开更多的第三方依赖项。
欢迎任何想法或讨论,我对这里的 JSON 有点不知所措,所以我可以从中学习的任何讨论都会有所帮助。
最佳答案
尽管您讨厌第三方库,但我强烈考虑研究 Jackson java 库,并利用其反序列化/序列化功能。
本质上,您创建可以从 JSON 映射的 java 对象。例如,对于 JSON:
{
"email": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d2b7bfb3bbbe92b5bfb3bbbefcb1bdbf" rel="noreferrer noopener nofollow">[email protected]</a>",
"googleId": "43243243242432",
"name": "some name"
}
创建一个java类:
public class User {
private String email;
private String googleId;
private String name;
// Getters and Setters...
}
然后,您可以使用 Jackson 的对象映射器将 JSON 字符串映射到对象,例如:
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(myJsonString, User.class);
这使您可以轻松访问这些字段:
String name = user.getName(); // some name
String email = user.getEmail(); // <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="07626a666e6b47606a666e6b2964686a" rel="noreferrer noopener nofollow">[email protected]</a>
等等。
关于java - 读取具有多个不同类的 JSON 作为响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37448984/