我一直在尝试Android应用程序并使用API中的JSON来提供很酷的JSON对象,我知道有用于将JSON对象解析为Java对象的库,但是,当有一个巨大的JSON文件时,它会不断每次用户打开应用程序时更改参数,我如何创建java创建并将JSON对象转换为Java对象供我在我的应用程序中使用?
但是,我正在使用Tumblr API来提供JSON响应。我想将该响应转换为一堆图像,但是,博客上可能有数百个图像,我无法生成数百个Java对象,每个对应于每个相应的JSON对象。这就是我的问题所在,在更大规模上执行JSON解析。
如果你想看到实际的代码/ JSON脚本请注释,虽然我还没有看到它的必要性,更多的是一般性问题。
答案 0 :(得分: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/ 他们是节省时间的人。
答案 1 :(得分:0)
简单易行!使用 jackson
和 lombok
。
https://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