java - 读取具有多个不同类的 JSON 作为响应

标签 java arrays json oop object

所以我正在开发一个 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/

相关文章:

java - 套接字读取线不阻塞

java - 为什么不能,例如将 List<ChildClass> 传递给以 List<ParentClass> 作为参数的方法?

java - 将元素添加到数组的开头。

javascript - 如何使用 JSON 坐标向 OPENLAYERS map 添加标记?

jquery - Asp MVC 3 json复杂对象未初始化属性

Java ZonedDateTime 保存在数据库中

java - 用 Java 封装 GMP

java - Java 中使用数组进行字符串连接。没有得到想要的输出

java - 查找未排序数组中的唯一元素

java - 在 Java 中将 URL 参数转换(解析)为 JSON