2011-07-07 8 views
0

JSONジャクソンを使用してPOJOからJSONに変換しています。私は使用していますJackson JSONの使用時にインスタンス化されるインスタンス変数を制御する方法

mapper.writeValueAsString(s); 

正常に動作しています。問題は、私はすべてのクラスのvaraiblesをJSONに変換したくないということです。誰でもそれを行うために騒ぐ。 ObjectMapperの関数があります。を指定すると、このクラスをJSONに変換できません。

+1

「クラス変数」とは何ですか?フィールド? – skaffman

+0

私はこれが実際に静的フィールドを参照していないと推測しています。なぜなら、デフォルトでは、Jacksonは静的フィールドをシリアル化しないからです。 –

答えて

3

@JsonIgnoreJavaDoc)で無視したいフィールドに注釈を付けます。

1

@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


で私のブログの記事に概説されています。

関連する問題