【问题标题】:GSON - Exclude Object based on Value of FieldGSON - 根据字段值排除对象
【发布时间】:2012-08-01 13:02:52
【问题描述】:

我有一些 JSON,其中包含一个名为“type”的键。该键的值可以是includeexclude。我想配置Gson不反序列化Json,并在键值为exclude时创建一个对象。

我意识到我可以编写一个自定义反序列化器,检查是否合适,然后创建或不创建对象。但是,我不确定是否有另一种使用某种排除策略的方法。

我概述的示例过于简单。我的真实 JSON 包含更多字段。

// Deserialize me
{     
   "type" : "include"
}

// Skip over me, and do not deserialize
{
   "type" : "exclude"
}

【问题讨论】:

  • 你有没有找到任何选择?

标签: gson


【解决方案1】:

我不认为ExclusionStrategy 可以在这里提供帮助。它适用于类而不是实例,并且在处理实例时,仅存在其评估的结果(如果您想查看代码,请参阅ReflectiveTypeAdapterFactory.BoundField)。

【讨论】:

    【解决方案2】:

    这可能对你有帮助...

    Gson gson = new Gson();
    JsonObject jsonObj = gson.fromJson (jsonStr, JsonElement.class).getAsJsonObject();
    
    // Just read the required field
    if(jsonObj.get("type").getAsString().equals("include")) {
        // Continue parsing/deserializing other details
    } else {
        // Skip
    }
    

    您可以参考this 获取 Gson API 文档

    【讨论】:

      猜你喜欢
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      相关资源
      最近更新 更多