JSONジャクソンを使用してPOJOからJSONに変換しています。私は使用していますJackson JSONの使用時にインスタンス化されるインスタンス変数を制御する方法
mapper.writeValueAsString(s);
正常に動作しています。問題は、私はすべてのクラスのvaraiblesをJSONに変換したくないということです。誰でもそれを行うために騒ぐ。 ObjectMapper
の関数があります。を指定すると、このクラスをJSONに変換できません。
JSONジャクソンを使用してPOJOからJSONに変換しています。私は使用していますJackson JSONの使用時にインスタンス化されるインスタンス変数を制御する方法
mapper.writeValueAsString(s);
正常に動作しています。問題は、私はすべてのクラスのvaraiblesをJSONに変換したくないということです。誰でもそれを行うために騒ぐ。 ObjectMapper
の関数があります。を指定すると、このクラスをJSONに変換できません。
@JsonIgnore
(JavaDoc)で無視したいフィールドに注釈を付けます。
@JsonIgnore
および@JsonIgnoreType
を使用して、特定のプロパティを無視するか、特定のタイプのすべてのプロパティを無視する例を次に示します。
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonIgnoreType;
import org.codehaus.jackson.map.ObjectMapper;
public class JacksonIgnoreFieldsDemo
{
public static void main(String[] args) throws Exception
{
ObjectMapper mapper = new ObjectMapper();
String json1 = mapper.writeValueAsString(new Bar());
System.out.println(json1); // {"a":"A"}
// input: {"a":"xyz","b":"B"}
String json2 = "{\"a\":\"xyz\",\"b\":\"B\"}";
Bar bar = mapper.readValue(json2, Bar.class);
System.out.println(bar.a); // xyz
System.out.println(bar.b); // B
System.out.println();
System.out.println(mapper.writeValueAsString(new BarContainer()));
// output: {"c":"C"}
}
}
class BarContainer
{
public Bar bar = new Bar();
public String c = "C";
}
@JsonIgnoreType
class Bar
{
public String a = "A";
@JsonIgnore
public String b = "B";
}
その他のオプションは、コピー&ペーストの間違いを修正するために更新http://programmerbruce.blogspot.com/2011/07/gson-v-jackson-part-4.html
で私のブログの記事に概説されています。
「クラス変数」とは何ですか?フィールド? – skaffman
私はこれが実際に静的フィールドを参照していないと推測しています。なぜなら、デフォルトでは、Jacksonは静的フィールドをシリアル化しないからです。 –