2016-07-27 4 views
2

Я использую Java с Spring MVC и MyBatis для подключения к базе данных. У меня есть таблица учетных записей, и для некоторых запросов мне нужны все поля, но для других мне нужно удалить некоторые свойства.Java удаляет свойства в ResponseBody

Например, чтобы показать основную информацию после запроса MyBatis, у меня есть несколько полей null и другие false или даже 0, потому что запрос им не нужен. Изначально у меня было это в моем ResponseBody:

{ 
    "accountName": "Pagosonline.com", 
    "country": "CO", 
    "commercialName": "PayU - Latam", 
    "city": "Chiquinquirá", 
    "location": null, 
    "secureName": null, 
    "description": null, 
    "document": "8301097231", 
    "localOperation": false, 
    "address": null, 
    "acceptInternationalTransactions": false, 
    "balance": 0 
} 

Таким образом, я использовал эту аннотацию:

@JsonInclude(JsonInclude.Include.NON_NULL) 
public class Account implements Serializable {...} 

И теперь у меня есть этот ResponseBody без нулевых значений:

{ 
    "accountName": "Pagosonline.com", 
    "country": "CO", 
    "commercialName": "PayU - Latam", 
    "city": "Chiquinquirá", 
    "document": "8301097231", 
    "localOperation": false,  
    "acceptInternationalTransactions": false, 
    "balance": 0 
} 

Но, как я не используйте в запросе последние 3 поля, их возвращают false и 0. Альтернативой, о которой я думал, является создание другой модели Entity только с необходимыми полями. Но сначала я хочу знать, есть ли другое решение, возможно, удалив эти поля из ResponseBody.

Ожидаемый ответ:

{ 
    "accountName": "Pagosonline.com", 
    "country": "CO", 
    "commercialName": "PayU - Latam", 
    "city": "Chiquinquirá", 
    "document": "8301097231" 
} 
+0

Вы можете попробовать этот '@JsonSerialize (include = JsonSerialize.Inclusion.NON_NULL);' и попробовали ли вы аннотацию в поле вместо уровня класса? Также попробуйте 'Include.NON_EMPTY' вместо' Include.NON_NULL' – Lucky

ответ

0

Вы пытались добавить @JsonIgnoreProperties аннотацию к классу счета?

@JsonIgnoreProperties(value = { "balance", "acceptInternationalTransactions", "localOperation" }) 

В документах говорят:

аннотации, которые могут быть использованы либо подавляют сериализации свойств (во время сериализации), или игнорировать обработку JSON свойства чтения (во время десериализации).

+0

Да, но он будет игнорировать эти свойства для всех методов, которые используют эту модель. Мне просто нужно игнорировать их в некоторых конкретных случаях. – AndreFontaine

0

Вы можете использовать @JsonFilter и создать свой собственный PropertyFilter, исходя из ваших собственных критериев. Это действительно хорошо документировано here.

 Смежные вопросы

  • Нет связанных вопросов^_^