我知道有很多JSON解析库。 但经过一些搜索,我似乎找不到一种简单的方法来解析java中的json数据。
我知道最好的做法是拥有一个合适的模型,以便api请求直接映射到一个对象。
但是我想说我有一个JSONObject:
JSONObject c = contacts.getJSONObject(i);
String id = c.getString("id");
String name = c.getString("name");
String email = c.getString("email");
String address = c.getString("address");
String gender = c.getString("gender");
我以前使用以下语法来获取数据:
contacts["id]
contacts["name"]
我个人更喜欢使用后者的可读性,特别是当你开始进入嵌套数据时,例如:
articleItem["_embedded"]["wp:featuredmedia"][0]["media_details"]["sizes"]["medium"]["source_url"]
在我看来,获取这些数据的java代码真的很难看。
b = a.getJSONObject("_embedded")
c = b.getJSONObject("wp:fea....")
d = c.get(0)
e = d.getJSONObject("media..details")
f = e.getJSONObject("sizes")
g = f.getJSONObject("medium")
h = ............
是一种在java中做一个衬里json的方法吗?
答案 0 :(得分:1)
quicktype将直接从JSON示例数据生成您的类和转换器;您可能会认为这是“像其他语言一样阅读JSON”,因为您只需获得一个POJO实例,就可以像以下一样访问它:
git fetch origin v1:v1 v2:v2
我认为你的JSON就像:
ArticleItem item = Converter.fromJsonString(jsonString);
String url = item.getEmbedded().getWpFeaturedmedia()[0]
.getMediaDetails().getSizes()
.getMedium().getSourceUrl();
的完整代码
{
"_embedded": {
"wp:featuredmedia": [
{
"media_details": {
"sizes": {
"medium": {
"source_url": "https://quicktype.io"
}
}
}
}
]
}
}
答案 1 :(得分:0)
您可以使用ObjectMapper将Json转换为Java对象,这将使您根据使用情况使用或解析数据。
https://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/
答案 2 :(得分:0)
在Java中读取json对象是不可能的,就好像它是另一种语言,即javascript。
唯一的方法是将json转换为Java模型对象,然后通过Java东西访问它。
使用 Google gson (https://github.com/google/gson)非常简单。
在您的情况下,您必须实现与处理过的json相关的所有类并启动:
Gson gson = new Gson();
Contact contact = gson.fromJson(jsonfile)
很明显,您还必须实现所有嵌套的Contact类,即Embedded类:
public class Contact {
.....
Embedded _embedded;
....
}