Удалите определенные ключи JSONObject в toString () POJO - PullRequest
1 голос
/ 06 января 2020

У меня проблема с удалением некоторых ключей JSONObject в toString() моего JPA POJO. Я просто не хочу, чтобы они отображались в toString() при сохранении их в POJO, чтобы я мог работать с ними. Мне удалось удалить их в родительской сущности, но я не смог сделать это в дочерних сущностях. Ниже моя toString() реализация в моей родительской сущности.

@Entity
public class MyPoJo () {
// all fields

// getters and setters

@Override
public String toString() {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        JSONObject modifiedJSON = new JSONObject(gson.toJson(this));
        modifiedJSON.remove("batchId");
        return modifiedJSON.toString();
     }
}

Я пытался сделать то же самое во всех моих дочерних сущностях. Когда я вызываю toString (), batchId исчезает только в родительской сущности. Они все еще существуют у детей. Как я могу удалить некоторые ключи в дочерних объектах? Спасибо.

1 Ответ

0 голосов
/ 06 января 2020

Вы можете использовать Джексона для достижения этой цели, пометив поля, которые должны игнорироваться, как @JsonIgnore.

@Entity
public class MyPoJo () {
// all fields
@JsonIgnore
private String batchId;

// getters and setters

@Override
public String toString() {
        // Exception handling code not added
        ObjectMapper mapper = new ObjectMapper();
        return mapper.writeValueAsString(this);
     }
}

Вы можете дополнительно переместить ObjectMapper mapper = new ObjectMapper(); и код обработки ожиданий в отдельный класс, чтобы избежать создания новых Объект ObjectMapper для каждого toString() вызова.

...