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

Convertir une carte en chaîne Java

Convertir la carte en chaîne Java | La carte est une interface où les données sont stockées sous forme de clés et de valeurs. Et les clés doivent être uniques. L'opération d'insertion, de recherche, de suppression, etc. se fait sur la base de la clé. Cette interface est présente dans le package java.util. La chaîne est une collection d'une séquence de caractères. Dans cette section, nous allons convertir la carte en chaîne.

Chaque fois que nous imprimons/affichons la carte, elle appelle la méthode toString() sur l'objet map, qui convertit la carte en chaîne. Mais pour convertir la carte en chaîne JSON, nous avons besoin d'API externes. Nous allons les voir à travers des exemples.

Programme Java pour convertir une carte en chaîne Java

import java.util.HashMap;

public class Main {
   public static void main(String[] args) {
      HashMap<String, Integer> map = new HashMap<>();
      map.put("apple", 10);
      map.put("strawberries", 50);
      map.put("banana", 20);
      map.put("watermelon", 70);
      map.put("pomegranate", 20);
      map.put("mango", 40);
      System.out.println("Map.toString(): " + map.toString());
      System.out.println("Map: " + map);
   }
}

Sortie :-

Map.toString() :{banane=20, pomme=10, grenade=20, fraises=50, pastèque=70, mangue=40}
Carte :{banane=20, pomme=10, grenade=20, fraises=50, pastèque=70, mangue=40}

Dans le visualiseur JSON, ce résultat sera affiché comme suit :-

{
  banana=20,
  apple=10,
  pomegranate=20,
  strawberries=50,
  watermelon=70,
  mango=40
}

Voyons un exemple similaire en utilisant des objets. Nous aurons des objets Student &Address. L'objet étudiant contiendra l'identifiant, le nom et l'adresse, et l'objet adresse contiendra la ville et le code PIN. La carte aura l'objet étudiant comme valeur.

Java Convertir une carte en chaîne pour les objets

public class Student {
   
   private int id;
   
   private String name;
   
   private Address address;

   // setter & getters

   @Override
   public String toString() {
      return "Student [id=" + id + 
            ", name=" + name + 
            ", address=" + address + "]";
   }
}
public class Address {

   private String city;

   private int pincode;

   // setter & getters

   @Override
   public String toString() {
      return "Address [city=" + city + 
            ", pincode=" + pincode + "]";
   }
}

Dans la classe Student et Address, nous devons remplacer la méthode toString () sinon la carte n'affichera que la référence des étudiants, pas ses données ou sa valeur. La façon dont nous définissons la méthode toString() sera utilisée pour afficher les données de la carte lors de la conversion.

import java.util.HashMap;

public class Main {
   public static void main(String[] args) {

      Student student1 = new Student();
      student1.setId(101);
      student1.setName("John");
      Address address1 = new Address();
      address1.setCity("Texas");
      address1.setPincode(77449);
      student1.setAddress(address1);

      Student student2 = new Student();
      student2.setId(102);
      student2.setName("William");
      Address address2 = new Address();
      address2.setCity("New York");
      address2.setPincode(11368);
      student2.setAddress(address2);

      HashMap<String, Object> map = new HashMap<>();
      map.put("student1", student1);
      map.put("student2", student2);
      System.out.println("Map: " + map);
   }
}

Sortie :-

Carte :{student2=Étudiant [id=102, name=William, address=Address [city=New York, pincode=11368]], student1=Étudiant [id=101, name=John, address=Address [city=Texas, code_pin=77449] ] }

Dans le visualiseur JSON, il s'affiche comme ci-dessous :-

{
  student2=Student[
    id=102,
    name=William,
    address=Address[
      city=NewYork,
      pincode=11368
    ]
  ],
  student1=Student[
    id=101,
    name=John,
    address=Address[
      city=Texas,
      pincode=77449
    ]
  ]
}

Convertir la carte en chaîne JSON en Java

Exemple pour convertir la carte en chaîne JSON :-
Carte :{banana=2, apple=1, pomegranate=3, mango=4}
String :{"banana":2,"apple":1,"grenade":3,"mangue":4}

Lorsque nous voyons cette chaîne JSON avec format/beautify, elle s'affichera sous la forme,

{
  "banana": 2,
  "apple": 1,
  "pomegranate": 3,
  "mango": 4
}

Dans Convertir une chaîne en carte en Java, nous avons expliqué comment convertir une chaîne en carte à l'aide de l'API Jackson. Nous allons maintenant voir comment convertir la carte en chaîne JSON à l'aide de l'API Jackson. Pour cela, nous aurons besoin des dépendances suivantes :- Jackson-core, Jackson-databind & Jackson-annotations.

import java.util.HashMap;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {
   public static void main(String[] args) 
                 throws JsonProcessingException {
      HashMap<String, Integer> map = new HashMap<>();
      map.put("apple", 10);
      map.put("strawberries", 50);
      map.put("banana", 20);
      map.put("watermelon", 70);
      map.put("pomegranate", 20);
      map.put("mango", 40);
      System.out.println("Map: " + map);

      String string = mapToString(map);
      System.out.println("String: " + string);
   }

   public static String mapToString(HashMap<String, Integer> map) 
         throws JsonProcessingException {
      ObjectMapper objectMapper = new ObjectMapper();
      return objectMapper.writeValueAsString(map);
   }
}

Sortie :-

Carte :{banane=20, pomme=10, grenade=20, fraises=50, pastèque=70, mangue=40}
Chaîne :{"banane":20,"pomme":10,"grenade":20,"fraises":50,"pastèque":70,"mangue":40}

Cette chaîne JSON sera affichée comme suit :-

{
  "banana": 20,
  "apple": 10,
  "pomegranate": 20,
  "strawberries": 50,
  "watermelon": 70,
  "mango": 40
}

Voyons maintenant un autre programme où pour HashMap. Ici, la carte contiendra une chaîne comme clé et un objet comme valeur. Le point intéressant est le suivant :lors de l'utilisation de l'API Jackson pour convertir la carte en chaîne, nous n'avons pas besoin de remplacer explicitement la méthode toString() dans la classe Object. Voyons cela à travers un exemple :-

Java Convertir la carte en chaîne JSON pour les objets

public class Student {
   
   private int id;
   
   private String name;
   
   private Address address;

   // setter & getters
   // toString() not needed
}
public class Address {

   private String city;

   private int pincode;

   // setter & getters
   // toString() not needed
}
import java.util.HashMap;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

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

      Student student1 = new Student();
      student1.setId(101);
      student1.setName("John");
      Address address1 = new Address();
      address1.setCity("Texas");
      address1.setPincode(77449);
      student1.setAddress(address1);

      Student student2 = new Student();
      student2.setId(102);
      student2.setName("William");
      Address address2 = new Address();
      address2.setCity("New York");
      address2.setPincode(11368);
      student2.setAddress(address2);

      HashMap<String, Object> map = new HashMap<>();
      map.put("student1", student1);
      map.put("student2", student2);
      System.out.println("Map: " + map);

      String string = mapToString(map);
      System.out.println("String: " + string);
   }

   public static String mapToString(HashMap<String, Object> map) 
         throws JsonProcessingException {
      ObjectMapper objectMapper = new ObjectMapper();
      return objectMapper.writeValueAsString(map);
   }
}

Sortie :-

Carte :{[email protected], [email protected]}
Chaîne :{"student2":{"id":102,"name":"William", "address":{"city":”New York”,”pincode”:11368}},”student1″:{“id”:101,”name”:”John”,”address”:{“city”:”Texas”,”pincode”:77449 }}}

Les données de chaîne résultantes seront affichées comme suit dans l'embellisseur JSON :-

{
  "student2": {
    "id": 102,
    "name": "William",
    "address": {
      "city": "New York",
      "pincode": 11368
    }
  },
  "student1": {
    "id": 101,
    "name": "John",
    "address": {
      "city": "Texas",
      "pincode": 77449
    }
  }
}

Balise Java