Как игнорировать элемент JSON в Android Retrofit

Я разрабатываю Android-приложение, которое отправляет JSON с помощью Android Retrofit (он преобразует класс POJO в JSON). Он работает нормально, но мне нужно игнорировать при отправке JSON один элемент из класса POJO.

Кто-нибудь знает аннотацию Android Retrofit?

пример

Класс POJO:

public class sendingPojo { long id; String text1; String text2;//--> I want to ignore that in the JSON getId(){return id;} setId(long id){ this.id = id; } getText1(){return text1;} setText1(String text1){ this.text1 = text1; } getText2(){return text2;} setText2(String text2){ this.text2 = text2; } } 

Интерфейс отправителя ApiClass

  public interface SvcApi { @POST(SENDINGPOJO_SVC_PATH) public sendingPojo addsendingPojo(@Body sendingPojo sp); } 

Любая идея, как игнорировать text2 ?

Отметьте нужные поля с помощью аннотации @Expose, например:

 @Expose private String id; 

Оставьте все поля, которые вы не хотите сериализовать. Тогда просто создайте объект Gson таким образом:

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

Я нашел альтернативное решение, если вы не хотите использовать new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create() .

Просто включив transient переменную, мне нужно игнорировать.

Итак, класс POJO:

 public class sendingPojo { long id; String text1; transient String text2;//--> I want to ignore that in the JSON getId() { return id; } setId(long id) { this.id = id; } getText1() { return text1; } setText1(String text1) { this.text1 = text1; } getText2() { return text2; } setText2(String text2) { this.text2 = text2; } } 

Я надеюсь, что это помогает

Вы можете настроить Retrofit, добавив объект GSON из GSONBuilder в ваш ConverterFactory, см. Мой пример ниже:

 private static UsuarioService getUsuarioService(String url) { return new Retrofit.Builder().client(getClient()).baseUrl(url) .addConverterFactory(GsonConverterFactory.create(getGson())).build() .create(UsuarioService.class); } private static OkHttpClient getClient() { return new OkHttpClient.Builder().connectTimeout(5, MINUTES).readTimeout(5, MINUTES) .build(); } private static Gson getGson() { return new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); } 

Чтобы игнорировать элементы поля, просто добавьте @Expose (deserialize = false, serialize = false) к вашим свойствам или none, а для (de) сериализуйте ваши элементы полей, вы можете добавить аннотации @Expose () с пустыми значениями к вашим свойствам.

 @Entity(indexes = { @Index(value = "id DESC", unique = true) }) public class Usuario { @Id(autoincrement = true) @Expose(deserialize = false, serialize = false) private Long pkey; // <- Ignored in JSON private Long id; // <- Ignored in JSON, no @Expose annotation @Index(unique = true) @Expose private String guid; // <- Only this field will be shown in JSON.