Json解析

本文详细介绍了JSON的基本概念、数据结构(数组Json、对象Json及嵌套Json),并展示了阿里高性能JSON解析库Fastjson的使用,包括对象、List、Map转Json以及Json转对象、List和Map的操作。
摘要由CSDN通过智能技术生成

1,什么是Json?

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

2,数组Json,对象Json 嵌套Json

<script type="text/javascript">
    let jsonArray = ["元素1", true, 0.1];//数组Json
    for (let i = 0; i < jsonArray.length; i++) {
        console.log(jsonArray[i]);
    }
    
    //键值对 键必须字符串,值不限
    let jsonObject = {"k1": "v1", "k2": "v2"};//对象Json
    console.log(jsonObject.k1);
    console.log(jsonObject.k2);
    
    //Json的相互嵌套,数组的元素是对象
    let json = [
        {"name": "张三", "age": 20},
        {"name": "李四", "age": 21}
    ];
    for (let i = 0; i < json.length; i++) {
        console.log(json[i].name + ">>>" + json[i].age);
    } 
    
	//Json的相互嵌套,对象的值是数组
    let json = {
        k1: ["北京", "天津", "承德"],
        k2: ["海淀", "塘沽", "平泉"]
    };
    for (let i = 0; i < json.k1.length; i++) {
        console.log(json.k1[i]);
    }

    //Json的相互嵌套,对象值为数组,数组元素为对象
    let json = {
        "k1": [
            {"name": "张三", "age": 19},
            {"name": "李四", "age": 21}
        ],
        "k2": [
            {"name": "赵六", "age": 22},
            {"name": "王五", "age": 23}
        ],

    }
    for (let i = 0; i < json.k1.length; i++) {
        console.log(json.k1[i].name + ">>" + json.k1[i].age);
    }
</script>

3,阿里高性能Json框架之FastJson

fastjson 是阿里巴巴的开源JSON解析库,Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。

   <!-- 首先引入fastjson依赖   -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.70</version>
    </dependency>
@Data
public class User {
    private String name;
    private Integer age;
}
public class JsonTest {
    static User users() {
        User user = new User();
        user.setName("张三");
        user.setAge(20);
        return user;
    }

    @Test
    public void test01() {
        //对象转Json
        User users = JsonTest.users();
        String jsonString = JSON.toJSONString(users);
        System.out.println("jsonString = " + jsonString);
        //jsonString = {"age":20,"name":"张三"}
    }

    @Test
    public void test02() {
        //List转Json
        List<User> userList = new ArrayList();
        userList.add(JsonTest.users());
        String jsonListString = JSON.toJSONString(userList);
        System.out.println("jsonListString = " + jsonListString);
        //[{"age":20,"name":"张三"}]
    }

    @Test
    public void test03() {
        //Map转Json
        Map<String, Object> map = new HashMap<>();
        map.put("k1", JsonTest.users());
        String jsonMapString = JSON.toJSONString(map);
        System.out.println("jsonMapString = " + jsonMapString);
        //jsonMapString = {"k1":{"age":20,"name":"张三"}}
    }

    @Test
    public void test04() {
        // JSON转对象 {"age":20,"name":"张三"}
        String sjson = "{\"age\":20,\"name\":\"张三\"}";
        User user = JSON.parseObject(sjson, User.class);
        System.out.println("user = " + user);
        //user = User(name=张三, age=20)
    }

    @Test
    public void test05() {
        // JSON转List [{"age":20,"name":"张三"}]
        String sjson = "[{\"age\":20,\"name\":\"张三\"}]";
        List<User> userList = JSON.parseArray(sjson, User.class);
        System.out.println("userList = " + userList);
        //userList = [User(name=张三, age=20)]
    }

    @Test
    public void test06() {
        // JSON转Map {"k1":{"age":20,"name":"张三"}}
        String sjson = "{\"k1\":{\"age\":20,\"name\":\"张三\"}}";
        Map<String, User> map = JSON.parseObject(sjson, new TypeReference<Map<String, User>>() {
        });
        Set<String> key = map.keySet();
        Iterator<String> iterator = key.iterator();
        while (iterator.hasNext()) {
            String next = iterator.next();
            System.out.println(map.get(next));
        }
        //User(name=张三, age=20)
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值