仕様に従ってこれをシリアル化するには、汎用リストを処理するカスタムタイプのアダプターを作成する必要があります。まず、出力で適切なフォーマットを行うクラスを作成します。
public class KeyValuePairSerializer extends TypeAdapter<List<BasicNameValuePair>> {
@Override
public void write(JsonWriter out, List<BasicNameValuePair> data) throws IOException {
out.beginObject();
for(int i=0; i<data.size();i++){
out.name(data.get(i).getName());
out.value(data.get(i).getValue());
}
out.endObject();
}
/*I only need Serialization*/
@Override
public List<BasicNameValuePair> read(JsonReader in) throws IOException {
return null;
}
}
次に、カスタムGsonビルダーを使用して、そのタイプアダプターを使用して適切なJSON文字列を作成します。
GsonBuilder gsonBuilder= new GsonBuilder();
gsonBuilder.registerTypeAdapter(KeyValuePairSerializer.class, new KeyValuePairSerializer());
Gson gson=gsonBuilder.create();
Logger.e(getClass().getSimpleName(),gson.toJson(kvp, KeyValuePairSerializer.class));