Java >> Tutoriel Java >  >> Tag >> String

Désérialiser la chaîne en énumération Java

Désérialiser la chaîne en énumération Java | L'énumération est une constante nommée utilisée pour définir un type de classe. Comme la classe, les énumérations Java peuvent également avoir des méthodes, des variables d'instance et des constructeurs. En Java, les énumérations sont créées à l'aide du mot-clé enum.

Convertir la chaîne JSON en énumération en Java

// Distance class
public enum Distance {
   KM("km", 1000), CM("cm", 0.01), 
   INCH("inch", 0.0254), MILE("mile", 1609.34), 
   MM("mm", 0.001), METER("meter", 1),
   UNKNOWN("un", 0);

   public String units;
   public final double meter;

   private Distance(String unit, double meters) {
      this.units = unit;
      this.meter = meters;
   }
}
class City {
   Distance distance;

   public Distance getDistance() {
      return distance;
   }
}
// Main class
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {
   public static void main(String args[]) 
    throws JsonMappingException, JsonProcessingException {

      String string = "{\"distance\":\"INCH\"}";
      ObjectMapper objectMapper = new ObjectMapper();

      City city = objectMapper.readValue(string, City.class);
      System.out.println("Distance of the City is in: " 
         + city.getDistance());
   }
}

Sortie :

La distance de la ville est en :INCH

Désérialiser la chaîne en énumération Java

L'annotation @JsonValue est l'annotation qui peut être utilisée à la fois pour la sérialisation et la désérialisation, car les énumérations sont constantes, c'est possible. Voyons cela à travers un exemple :-

// Distance class
import com.fasterxml.jackson.annotation.JsonValue;

public enum Distance {
   KM("km", 1000), METER("meter", 1), 
   MM("mm", 0.001), INCH("inch", 0.0254), 
   CM("cm", 0.01), MILE("mile", 1609.34),
   UNKNOWN("un", 0);

   public String units;
   public final double meters;

   private Distance(String unit, double meter) {
      this.units = unit;
      this.meters = meter;
   }

   @JsonValue
   public double getEnumValue() {
      return meters;
   }
}
// Main class
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {
   public static void main(String args[]) 
      throws JsonMappingException, JsonProcessingException {

      String string = "{\"distance\":\"0.0254\"}";
      ObjectMapper objectMapper = new ObjectMapper();

      City city = objectMapper.readValue(string, City.class);
      System.out.println("Distance of the City is in: " 
         + city.getDistance());
   }
}

Sortie :-

Distance de la ville :INCH

Nous avons la même classe Distance donnée dans l'exemple ci-dessus. Cette fois, en fonction de la valeur, elle correspond à la constante d'énumération valide.

Voir aussi :-

  • Énumération de chaînes Java
  • Comment supprimer les espaces d'une chaîne en Java
  • Java Définir le caractère dans la chaîne
  • Java pour chaque caractère dans la chaîne
  • Interpolation de chaînes Java
  • Citations dans une chaîne Java

Balise Java