注:本文转自《白煮蛋的博客》
你可以使用谷歌 Gson。
使用这个库,您只需要创建一个具有相同 JSON 结构的模型。然后模型会自动填充。您必须将变量称为 JSON 键,或者@SerializedName如果您想使用不同的名称,请使用。
从你的例子:
<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>
记得在 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 自动生成模型。