2016-08-20 6 views
0

の特定の APIが呼び出されたときに、の特定のフィールドのみをJsonで返しますか?私は "transient"を使用していますが、これはObjectレベルにあり、すべてのAPI呼び出しでtrueになります。JavaのAPI呼び出しでJsonの選択したフィールドを返す

例:完全なJSONは特定のユーザーのためのAPI呼び出しに応じて、

[{"field1":"a","field2":"b","field3":"c"},{"field1":"d","field2":"e","field3":"f"},{"field1":"g","field2":"h","field3":"i"}] 

で、 "JSON出力は、" APIの呼び出しに特異的です。 API呼び出しに応じて、次のいずれかがあります。

[{"field1":"a"},{"field1":"d"},{"field1":"g"}] 

OR

[{"field2":"b"},{"field2":"e"},{"field2":"h"}] 

OR

[{"field3":"c"},{"field3":"f"},{"field3":"i"}] 

または上記の組み合わせ。

など。上の例のコードを以下に示します。

public class childObj { 

    public String field1; 
    public String field2; 
    public String field3; 


    public childObj(String field1, String field2, String field3) { 
     super(); 
     this.field1 = field1; 
     this.field2 = field2; 
     this.field3 = field3; 
    } 

} 

メインクラスを以下のように定義されています

import java.util.ArrayList; 

import com.google.gson.Gson; 
import com.google.gson.GsonBuilder; 

public class ParentAndChildObjects { 

    public static void main(String[] args) { 

     ArrayList<childObj> childObjList = new ArrayList<childObj>(); 

     childObjList.add(new childObj("a","b","c")); 
     childObjList.add(new childObj("d","e","f")); 
     childObjList.add(new childObj("g","h","i")); 

     Gson gson = new GsonBuilder().create(); 

     String myString = gson.toJson(childObjList); 

     System.out.println(myString); 

    } 

} 

答えて

0

あなたはジャクソン、Javaで標準のJSONのlibを使用している場合、あなたは結果のオブジェクトに欲しいものをフィルタリングする@View注釈を使用することができます。

動的選択の場合、要件に応じて特定の注釈を使用する必要があります。このリンクはあなたに役立ちます - >http://www.cowtowncoder.com/blog/archives/2011/02/entry_443.html

たとえば、完全に動的なフィルタリングの場合、@JsonFilterの使用を見てください。

関連する問題