注:本文转自《白煮蛋的博客》
你可以使用谷歌 Gson。
使用这个库,您只需要创建一个具有相同 JSON 结构的模型。然后模型会自动填充。您必须将变量称为 JSON 键,或者@SerializedName如果您想使用不同的名称,请使用。
JSON
从你的例子:
<span style="background-color:var(--highlight-bg)"><span style="color:var(--highlight-color)"><code class="language-json">{
<span style="color:var(--highlight-attribute)">"pageInfo"</span>: {
<span style="color:var(--highlight-attribute)">"pageName"</span>: <span style="color:var(--highlight-variable)">"abc"</span>,
<span style="color:var(--highlight-attribute)">"pagePic"</span>: <span style="color:var(--highlight-variable)">"http://example.com/content.jpg"</span>
}
<span style="color:var(--highlight-attribute)">"posts"</span>: [
{
<span style="color:var(--highlight-attribute)">"post_id"</span>: <span style="color:var(--highlight-variable)">"123456789012_123456789012"</span>,
<span style="color:var(--highlight-attribute)">"actor_id"</span>: <span style="color:var(--highlight-variable)">"1234567890"</span>,
<span style="color:var(--highlight-attribute)">"picOfPersonWhoPosted"</span>: <span style="color:var(--highlight-variable)">"http://example.com/photo.jpg"</span>,
<span style="color:var(--highlight-attribute)">"nameOfPersonWhoPosted"</span>: <span style="color:var(--highlight-variable)">"Jane Doe"</span>,
<span style="color:var(--highlight-attribute)">"message"</span>: <span style="color:var(--highlight-variable)">"Sounds cool. Can't wait to see it!"</span>,
<span style="color:var(--highlight-attribute)">"likesCount"</span>: <span style="color:var(--highlight-variable)">"2"</span>,
<span style="color:var(--highlight-attribute)">"comments"</span>: [],
<span style="color:var(--highlight-attribute)">"timeOfPost"</span>: <span style="color:var(--highlight-variable)">"1234567890"</span>
}
]
}
</code></span></span>
模型
<span style="background-color:var(--highlight-bg)"><span style="color:var(--highlight-color)"><code class="language-java"><span style="color:var(--highlight-keyword)">class</span> <span style="color:var(--highlight-literal)">MyModel</span> {
<span style="color:var(--highlight-keyword)">private</span> PageInfo pageInfo;
<span style="color:var(--highlight-keyword)">private</span> ArrayList<Post> posts = <span style="color:var(--highlight-keyword)">new</span> <span style="color:var(--highlight-literal)">ArrayList</span><>();
}
<span style="color:var(--highlight-keyword)">class</span> <span style="color:var(--highlight-literal)">PageInfo</span> {
<span style="color:var(--highlight-keyword)">private</span> String pageName;
<span style="color:var(--highlight-keyword)">private</span> String pagePic;
}
<span style="color:var(--highlight-keyword)">class</span> <span style="color:var(--highlight-literal)">Post</span> {
<span style="color:var(--highlight-keyword)">private</span> String post_id;
<span style="color:var(--highlight-keyword)">@SerializedName("actor_id")</span> <span style="color:var(--highlight-comment)">// <- example SerializedName</span>
<span style="color:var(--highlight-keyword)">private</span> String actorId;
<span style="color:var(--highlight-keyword)">private</span> String picOfPersonWhoPosted;
<span style="color:var(--highlight-keyword)">private</span> String nameOfPersonWhoPosted;
<span style="color:var(--highlight-keyword)">private</span> String message;
<span style="color:var(--highlight-keyword)">private</span> String likesCount;
<span style="color:var(--highlight-keyword)">private</span> ArrayList<String> comments;
<span style="color:var(--highlight-keyword)">private</span> String timeOfPost;
}
</code></span></span>
解析
现在您可以使用 Gson 库进行解析:
<span style="background-color:var(--highlight-bg)"><span style="color:var(--highlight-color)"><code class="language-java"><span style="color:var(--highlight-namespace)">MyModel</span> <span style="color:var(--highlight-variable)">model</span> = gson.fromJson(jsonString, MyModel.class);
</code></span></span>
Gradle 导入
记得在 app Gradle 文件中导入库
<span style="background-color:var(--highlight-bg)"><span style="color:var(--highlight-color)"><code class="language-java">implementation <span style="color:var(--highlight-variable)">'com.google.code.gson:gson:2.8.6'</span> <span style="color:var(--highlight-comment)">// or earlier versions</span>
</code></span></span>
自动模型生成
您可以使用这样的在线工具从 JSON 自动生成模型。