Json数据类型介绍

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写。同时易于机器解析和生成。它是基于JavaScript Programming Language, Standard ECMA-263 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, JAVA, Java)。这些特性使JSON成为理想的数据交换语言。

JSON与JS对象的关系

JSON是JS对象的字符串表示法,它使用文本表示一个JS对象的信息,本质是一个字符串

1
2
var obj = {a: "hello", b: "world"};  //这是一个对象,注意键名也是可以使用引号包裹
var json = '{"a": "hello", "b": "world"}';  //这是一个JSON字符串,本质上是一个字符串

JSON数据类型的转换

现在的开发模式基本是采用前后端分离开发,这就涉及到数据传输的问题。多数数据传输的接口均使用Json格式。因此了解JSON格式数据转换,尤为重要。

第一次使用JSON格式的数据时候,就是在数据转换上走了很多弯路。现根据网络资源及实践经验整理如下常用的转换。

主要使用包 fasterxml.jackson

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;
import java.util.List;

public class JsonUtils {

    //定义Jackson对象
    private static final ObjectMapper MAPPER = new ObjectMapper();

    //将对象转换为Json字符串
    public static String ObjectToJson(Object data) {
        try {
            String string = MAPPER.writeValueAsString(data);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return null;
    }

    //将json字符串转换为对象
    public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
        try {
            T t = MAPPER.readValue(jsonData, beanType);
            return t;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    //将json字符串对象转换成pojo对象list
    public static <T> List<T> jsonToList(String jsonData, Class<T> beantype) {
        JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beantype);
        try {
            List<T> list = MAPPER.readValue(jsonData, javaType);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}