私は複数のフィールドを持つオブジェクトのリストを持っています。 API呼び出しに基づいて、リストは特定のフィールドのセットのみで返されます。私は一時的な使用 - それは特定のフィールドをシリアル化しません。しかし、そのフィールドは別のAPI呼び出しのために返す必要があります。私はGsonを使用しています。GSONを使用してJSONにシリアル化するPOJOフィールドを設定する方法を教えてください。
次の例では、APIに基づいて、表インスタンスのリストを、たとえばテーブルインスタンスの "name"、または "name"と "location"の両方、または単に場所。テーブルオブジェクトには30個のフィールドがあります。
1つの方法は、シナリオごとにPOJOにマップして印刷することです。これを行うより良い方法はありますか?どのフィールドをシリアル化するかを選択/選択/制約することができます。
など。
package Testing;
import java.util.ArrayList;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class TestJson {
public static Gson obGson = new GsonBuilder().setPrettyPrinting().create();
public static void main(String[] args) {
ArrayList<Table> myTable = new ArrayList<Table>();
myTable.add(new Table("John", "Chicago"));
myTable.add(new Table("David", "Seattle"));
myTable.add(new Table("June", "Dallas"));
System.out.println(obGson.toJson(myTable));
}
}
class Table {
String name;
String location;
public Table (String _name, String _location) {
name = _name;
location = _location;
}
}
上記の出力は、次のようになります。 API-1が呼び出されると、出力は以下のようになります。
[
{
"name": "John",
"location": "Chicago"
},
{
"name": "David",
"location": "Seattle"
},
{
"name": "June",
"location": "Dallas"
}
]
しかし、API-2が呼び出されると、出力は以下のようになります。そのAPI呼び出しで承認されたフィールドのみを返します。
[
{
"name": "John"
},
{
"name": "David"
},
{
"name": "June"
}
]
同様に、API呼び出しに基づいてリターンを管理することもできます。
問題は何ですか?あなたがシリアル化したい場合、Gsonは宣言されたフィールドを必要としますが、テーブルPOJOは必ずしも必要ではありません。直接マップにシリアル化してから、必要なフィールドを取得することができます –
'しかし、そのフィールドは別のAPI呼び出しのために返されます.'それはどういう意味ですか?あなたは見たい出力の例を挙げることができますか? – markspace
@markspace、お返事ありがとうございます。私は例を挙げました。どのフィールドを返すかを管理する方法を探していました。状況を説明するのに役立つことを願っています。 – userDSSR