Présentation de json - l'utilisation de Jackson, la conversion entre les objets bean (listes de listes) et les données json (sérialisation et désérialisation)

1. chaîne json

  JSON (JavaScript Object Notation, JS Object Notation) est un format d'échange de données léger .

1.1 Caractéristiques

  1. Il est totalement indépendant du format texte du langage de programmation pour stocker et représenter les données.

  2. La structure hiérarchique concise et claire fait de JSON un langage d'échange de données idéal.

  3. Il est facile à lire et à écrire pour les gens, mais également facile à analyser et à générer par la machine, et à améliorer efficacement l'efficacité de la transmission réseau.
    (La clé des données fils doit être une chaîne, et la valeur n'est pas limitée)

1.2 Syntaxe du format JSON

  1. Les données JSON peuvent être directement reconnues en JavaScript
  2. Dans le code java, les données et json peuvent être convertis l'un à l'autre

2. outil de conversion json

  L'outil de conversion json consiste à convertir directement des objets ou des collections java en chaînes au format json via certains packages jar emballés en java.

2.1 Outils de conversion courants pour json

Insérez la description de l'image ici

2.2 Utilisation de Jackson

  Parce que c'est un outil de conversion json gratuit et open source, et c'est aussi l'outil de conversion json par défaut de springmvc

2.2.1 Composition de Jaskson

Insérez la description de l'image ici

  • jackson-annotations: C'est le package d'annotation de Jaskson, fournissant une fonction d'annotation standard
  • jackson-core: Il s'agit du package principal et fournit des API associées basées sur l' analyse du " mode flux ", y compris JsonPaser et JsonGenerator
  • jackson-databind: Il s'agit d'un package de liaison de données qui fournit des API associées basées sur une analyse de " liaison d'objet " (ObjectMapper) et des API d'analyse de "modèle d'arbre" (JsonNode)

2.2.2 Classe ObjectMapper de Jackson 【***】

  La classe ObjectMapper est la classe principale de la bibliothèque Jackson, et ses principales fonctions sont:

  1. Réaliser la conversion d'objets java au format de données json (appelée sérialisation )
  2. Réaliser la conversion du format de données json en objet java (appelé désérialisation )
  • La classe peut être utilisée ObjectMapper Méthode readValue Le contenu JSON désérialise les objets Java.
  • La classe peut être utilisée Méthode ObjectMapper writeValue La sérialisation des objets Java est au format de données JSON.

2.3 Cas

  1. Importez des packages jar - Importez des packages jar dans le répertoire WEB-INF et ajoutez-les à la bibliothèque
    Insérez la description de l'image ici
  2. Créer un objet User (les attributs de classe de package Java sont généralement privés, donc les méthodes get / set sont requises, sinon Jackson ne peut pas les lire)
public class User {
    
    
    private String name;
    private int age;
    private String sex;
    private String address;
	//省略构造方法、getter/setter方法
}

2.3.1 Ecrire une classe de test, tester la méthode writeValueAsString () de la classe ObjectMapper et convertir javabean au format de données json

//测试对象序列化,将对象转换为json数据格式
public class TestObjectMapper {
    
    
    //测试单个对象user转换为json数据格式
    @Test
    public void test01() throws JsonProcessingException {
    
    
        //1、创建对象user
        User user = new User("我是GF_浪夏一学 - 单个对象",21,"男","湖南");
        //2、writeValueAsString()方法,将一个user对象转成json字符串
        String userJson = new ObjectMapper().writeValueAsString(user);//将javabean转换为json数据格式
        System.out.println(userJson);
    }

    //将一个对象数组转换为json数据格式
    @Test
    public void test02() throws JsonProcessingException {
    
    
        //1、创建对象,加入集合中
        User user1 = new User("我是集合user1",21,"男","湖南");
        User user2 = new User("我是集合user2",20,"女","北京");

        List<User> userList = new ArrayList<>();
        userList.add(user1);
        userList.add(user2);
        //2、writeValueAsString()方法,将一个对象数组转换为json数据格式
        String userListJson = new ObjectMapper().writeValueAsString(userList);
        System.out.println(userListJson);
    }

    //将一个Map集合转成json字符串
    @Test
    public void test03() throws JsonProcessingException {
    
    
        //1:创建对象
        User user1 = new User("我是map集合的user1对象",21,"男","湖南");
        User user2 = new User("我是map集合的user2对象",20,"女","北京");
        //存入map
        Map<String,User> map  = new HashMap<>();
        map.put("user1",user1);
        map.put("user2",user2);
        //2、writeValueAsString()方法,将一个Map集合转成json字符串
        String json= new ObjectMapper().writeValueAsString(map);
        System.out.println(json);
    }
}

résultat de l'opération:

Insérez la description de l'image ici

2.3.2. Tester la méthode readValue de la classe ObjectMapper et convertir le format de données json en objet javabean

public class TestObjectMapper {
    
    

    //将一个json数据转换为user对象
    @Test
    public void test04() throws IOException {
    
    
        //1:创建一个json对象
        String jsonData = "{\"name\":\"我是GF_浪夏一学\",\"age\":21,\"sex\":\"男\",\"address\":\"湖南\"}";
        //2、writeValueAsString()方法,将一个Map集合转成json字符串
        User user = new ObjectMapper().readValue(jsonData, User.class);
        System.out.println(user);//会输出user的toString()方法
    }
}

résultat de l'opération:
Insérez la description de l'image ici

Convertir le format de données JSON en liste
//测试json数据转集合list
    @Test
    public void test05() throws IOException {
    
    
        String json="[{\"name\":\"我是GF_浪夏一学\",\"age\":21,\"sex\":\"男\",\"address\":\"湖南\"},{\"name\":\"java小皮孩\",\"age\":21,\"sex\":\"男\",\"address\":\"深圳\"}]";

        //
        ObjectMapper objectMapper = new ObjectMapper();

        List<User> userList = objectMapper.readValue(json,new TypeReference<List<User>>(){
    
    });//将json转成对象   参1 json数据  参2 new TypeReference<>(){}
        System.out.println(userList);
    }

résultat de l'opération:
Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/qq_40542534/article/details/108669100
conseillé
Classement