首页 > 解决方案 > 使用动态变化的字段序列化传入的 JSON

问题描述

我在 JSON 响应中有动态变化的字段。

响应结构的一部分保持不变,因此我可以为这些字段定义 POJO,但我试图将响应的其余部分(即在带有键“字段”的 JSON 对象内)序列化为 JSONObject。但是当我记录 JSONObject 它总是空的。POJO 如下所示:

public class Project {

    @SerializedName("projectid")
    public String mProjectId;
    @SerializedName("parentgroupid")
    public String mParentGroupId;
    @SerializedName("projectname")
    public String mProjectName;
    @SerializedName("formid")
    public String mFormId;
    @SerializedName("state")
    public String mState;
    @SerializedName("priority")
    public int mPriority;
    @SerializedName("headers")
    public ArrayList<Header> mHeaders;
    @SerializedName("fields")
    public JSONObject mFields;
}

mFields 始终作为空 JSONObject 返回。

如何序列化这个动态变化的 JSONObject(它的键保持不变,但内容改变)?

标签: androidjsonserializationdynamicgson

解决方案


请使用JsonObject代替JSONObject并检查。

因为 JsonObject 可以使用 Object 定义直接创建所需类型的对象,最适合 Android 上的 JSON 解析,而 JSONObject 需要手动解析。

有关其方法和属性的更多详细信息,请参阅此JsonObject


推荐阅读