2017-07-18 11 views
1

jsonにJavaマップをシリアル化したいのですが、私は間違いなくjacksonまたはgsonを使用できます。JSONにマップする - 特定のキーを無視する

私はシリアル化するとき、私は指定するキーを無視したいと思います。出来ますか?

地図はです。キーは非常に汎用的なものである可能性があるので、POJOに裏付けされたマップは必要ありません。 POJOであれば、Ignoreアノテーションを使って達成することができます。

+2

私は投稿が多分あなたのint彼らはカスタムマップシリアライザを作成しました。 https://stackoverflow.com/questions/30475174/serialize-hashmap-to-a-json-string-while-avoiding-certain-fields-in-java – cralfaro

+1

コピーを作成する(またはオリジナルを使用する)ことができます。興味のない値を削除しますか? –

答えて

0

あなたはHashMapを拡張するカスタムクラスを作成することができます:あなたはGsonオブジェクトを作成するときに、あなたがでそれを初期化する必要があり

public class MyMapSerializer extends JsonSerializer<MyMap> { 
    @Override 
    public JsonElement serialize(MyMap arg0, Type arg1, JsonSerializationContext arg2) { 
     JsonObject result = new JsonObject(); 

     for (String k : arg0.keySet()) { 
      if (whatever your condition is) { 
       result.add(k, arg0.get(k)); 
      } 
     } 

     return result; 
    } 
} 

public class MyMap extends HashMap<String, Object> { 
} 

をして、カスタム・シリアライザを登録し、同様シリアライザのインス​​タンスを渡します:

Gson gson = new GsonBuilder().registerTypeAdapter(MyMap.class, new MyMapSerializer()).create();