我有以下JSON文本。我如何解析它以获得pageName, pagePic, post_id等的值?
{
"pageInfo": {
"pageName": "abc",
"pagePic": "http://example.com/content.jpg"
},
"posts": [
{
"post_id": "123456789012_123456789012",
"actor_id": "1234567890",
"picOfPersonWhoPosted": "http://example.com/photo.jpg",
"nameOfPersonWhoPosted": "Jane Doe",
"message": "Sounds cool. Can't wait to see it!",
"likesCount": "2",
"comments": [],
"timeOfPost": "1234567890"
}
]
}
本页的热门答案使用了太简单的例子,比如只有一个属性的对象(例如{name: value})。我认为这个简单但真实的例子可以帮助到一些人。
这是谷歌Translate API返回的JSON:
{
"data":
{
"translations":
[
{
"translatedText": "Arbeit"
}
]
}
}
我想检索“translatedText”属性的值。“Arbeit”使用谷歌的Gson。
两种可能的方法:
Retrieve just one needed attribute
String json = callToTranslateApi("work", "de");
JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
return jsonObject.get("data").getAsJsonObject()
.get("translations").getAsJsonArray()
.get(0).getAsJsonObject()
.get("translatedText").getAsString();
Create Java object from JSON
class ApiResponse {
Data data;
class Data {
Translation[] translations;
class Translation {
String translatedText;
}
}
}
...
Gson g = new Gson();
String json =callToTranslateApi("work", "de");
ApiResponse response = g.fromJson(json, ApiResponse.class);
return response.data.translations[0].translatedText;
首先,您需要选择一个实现库来执行此操作。
用于JSON处理的Java API (JSR 353)提供了使用对象模型和流API来解析、生成、转换和查询JSON的可移植API。
参考实现在这里:https://jsonp.java.net/
下面是JSR 353的实现列表:
哪些API实现了JSR-353 (JSON)
为了帮助你决定…我也找到了这篇文章:
http://blog.takipi.com/the-ultimate-json-library-json-simple-vs-gson-vs-jackson-vs-json/
如果您选择Jackson,这里有一篇关于使用Jackson在JSON和Java之间转换的好文章:https://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/
希望能有所帮助!