【问题标题】:Automatically creating java objects from json?从json自动创建java对象?
【发布时间】:2014-05-27 22:40:40
【问题描述】:

我一直在尝试使用 Android 应用程序并使用 API 中的 JSON 来创建很酷的 JSON 对象,我知道有一些库可以将 JSON 对象解析为 Java 对象,但是,当有一个巨大的 JSON 文件时每次用户打开应用程序时都更改参数,我该如何做 java 创建 JSON 对象并将其转换为 Java 对象以供我在我的应用程序中使用?

但是,我使用的是提供 JSON 响应的 Tumblr API。我想将该响应转换为一堆图像,但是,博客上可能有数百张图像,我无法制作数百个 Java 对象,每个对象都对应于每个相应的 JSON 对象。这就是我的问题所在,更大规模地执行 JSON 解析。

如果您想查看实际的代码/JSON 脚本,请发表评论,尽管我还没有看到其中的必要性,更多的是一般性问题。

【问题讨论】:

  • 不知道你在这里问什么。如果你知道如何从 JSON 创建 java 对象,那有什么问题?
  • 让我在问题中详细说明一下
  • 所以您正在寻找更多的流式 JSON 转换器,您可以在其中解析 JSON 以获取对象、处理该对象,然后继续解析下一个对象? GSON 确实支持从流解析 sites.google.com/site/gson/streaming
  • unify 指的是这个吗?
  • 不,@unify 指的是中间 JSON 解析结构,其中解析 JSON,但在您明确请求之前不会创建最终对象。根据您正在执行的操作,它可能会更节省内存,但如果您不需要保留对象,则流式传输将是最有效的。

标签: java android json image parsing


【解决方案1】:

您是对的,灵活性和结构之间总是需要权衡取舍。如果您的 JSON 确实经常更改,但以可预测的方式,最灵活的方法是旧的 JSONObject:

JSONObject jsonObject = new JSONObject(someJsonString);
JSONArray jsonArray = jsonObject.getJSONArray("someJsonArray");
String value = jsonArray.optJSONObject(i).getString("someJsonValue");

参考:http://www.json.org/javadoc/org/json/JSONObject.html

如果您谈论的是每次架构发生更改(例如 API 版本)时生成新的 POJOS,您可以尝试以下工具: http://www.jsonschema2pojo.org/http://jsongen.byingtondesign.com/ 它们非常节省时间。

【讨论】:

  • 但是如果它们都在一个大的 JSON 文件中呢?我将如何隔离每个对象,而不是只创建具有所有值的大对象?
【解决方案2】:

简单易懂!使用jacksonlombokhttps://www.baeldung.com/jackson-object-mapper-tutorial#2-json-to-java-object

import lombok.Data;
import com.fasterxml.jackson.databind.ObjectMapper;

@Data
public class Car {

    private String color;
    private String type;

    // standard getters setters will be available from Lombok
}


String json = "{ \"color\" : \"Black\", \"type\" : \"BMW\" }";
Car car = objectMapper.readValue(json, Car.class);  

// Now you can use car object. Ex: car.getColor()
car.getColor() // = Black

【讨论】:

    猜你喜欢
    • 2015-05-07
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    相关资源
    最近更新 更多