如何在 Java 中解析 JSON

注:本文转自《白煮蛋的博客》 

你可以使用谷歌 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 自动生成模型

 

上一篇:变量


下一篇:windows7安装chocolatey失败