Maison > Java > Convertir automatiquement POJO en JSON à l'aide de Jackson

Convertir automatiquement POJO en JSON à l'aide de Jackson

王林
Libérer: 2024-02-09 12:24:19
avant
735 Les gens l'ont consulté

Dans le développement Web moderne, l'interaction des données front-end et back-end est un lien très important. Dans le développement Java, la conversion d'objets POJO en données au format JSON est une exigence courante. Pour simplifier le processus de développement, Jackson est devenu une solution courante. Jackson est une puissante bibliothèque Java qui permet la conversion automatique des objets POJO au format JSON. Cet article décrira comment utiliser Jackson pour atteindre cet objectif. Jetons un coup d'œil au guide détaillé préparé par l'éditeur PHP Yuzai pour vous !

Contenu de la question

J'aimerais pouvoir faire ceci :

system.out.printf("my obj: %s\n", myobject);
Copier après la connexion

Et laissez-le générer du json. Ma meilleure solution jusqu'à présent est de faire ceci :

@Override
public String toString() {
    ObjectMapper mapper = new ObjectMapper();
    String retVal = null;
    try {
        retVal = mapper.writeValueAsString(this);
    }
    catch (JsonProcessingException ignored) {
    }
    return retVal;
}
Copier après la connexion

Cela fonctionne, mais c'est ennuyeux de devoir le faire sur chacun de mes pojos. Existe-t-il une annotation que je peux utiliser ou un autre moyen d'automatiser cela. J'utilise Jackson et le projet Lombok.

J'ai essayé de l'implémenter uniquement dans la classe de base mais cela ne fonctionnera pas dans les sous-classes. Si je l’implémente tout au long de la chaîne, cela fonctionne.

Solution de contournement

Si vous avez des classes héritées complexes, vous devez supprimer tous @tostring@data (其中包含 @tostring )或子类的 tostring tous les remplacements.

Voici un exemple de toutes les propriétés utilisées dans la méthode tostostostostostostring :

my obj: {"superproperty":"super","name":"abc","number":15,"gender":true}
Copier après la connexion
public abstract class BaseObject {
  @Override
  public String toString() {
    ObjectMapper mapper = new ObjectMapper();
    String retVal = null;
    try {
      retVal = mapper.writeValueAsString(this);
    } catch (JsonProcessingException ignored) {
    }
    return retVal;
  }

  @Setter
  @Getter
  @AllArgsConstructor
  public static class ChildObject extends BaseObject {
    private String superProperty;
  }

  @Setter
  @Getter
  public static class ChildObject1 extends ChildObject {
    private String name;
    private int number;
    private boolean gender;

    public ChildObject1(String superProperty, String name, int number, boolean gender) {
      super(superProperty);
      this.name = name;
      this.number = number;
      this.gender = gender;
    }
  }

  public static void main(String[] args) {
    System.out.printf("My obj: %s\n", new ChildObject1("super","abc", 15, true));
  }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal