遇一山,过一山,处处有风景;只要勇敢向前,一路尽是繁花盛开。 | (点击查看→)【测试干货】python/java自动化、持续集成、性能、测开、简历、笔试面试等

fastjson的使用(处理json字符串、json数组)

要求

练习1:将json字符串转化成map,字符串:{"username":"qzcsbj", "password":"123456"} 

练习2:json数组转换为对象集合,[{"name":"jack","age":"18"},{"name":"tom","age":"19"}]

 

pom依赖

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.75</version>
</dependency>

 

将json字符串转化成map

示例:{"username":"qzcsbj", "password":"123456"}

解析后保存到map

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
package com.qzcsbj;
 
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
 
import java.util.HashMap;
import java.util.Set;
 
/**
 * @公众号 : 全栈测试笔记
 * @博客 : www.cnblogs.com/uncleyong
 * @微信 : ren168632201
 * @描述 : <>
 */
public class Test {
    public static void main(String[] args) {
        String parameters = "{\"username\":\"qzcsbj\", \"password\":\"123456\"}";
 
        // 方式一:先解析为JSONObject,然后转换为map
        // 先创建一个map
        HashMap<String, String> params = new HashMap<String, String>();
 
        // 解析json格式字符串为JSONObject(JSONObject是Map接口的一个实现类,和HashMap平级)
        JSONObject jsonObject = JSONObject.parseObject(parameters);
        // 也可以写为下面,因为JSONObject继承了JSON,parseObject是JSON的静态方法
        // JSONObject jsonObject2 = JSON.parseObject(parameters);
 
        // JSONObject转换为map
        Set<String> keys = jsonObject.keySet();
        for (String key : keys) {
            params.put(key, jsonObject.getString(key));
        }
 
        // 遍历map
        Set<String> username = params.keySet();
        for (String name : username) {
            System.out.println("key=" + name + ", value=" + params.get(name));
        }
    }
}

 

 

 

json数组转换为对象集合

[{"name":"jack","age":"18"},{"name":"tom","age":"19"}]

 

实体类

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
package com.qzcsbj;
 
/**
 * @博客 : www.cnblogs.com/uncleyong
 * @微信 : ren168632201
 * @描述 : <>
 */
public class User {
    private String name;
    private String age;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getAge() {
        return age;
    }
 
    public void setAge(String age) {
        this.age = age;
    }
 
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                '}';
    }
}

 

第二个参数是传入字节码,说明源码用到了反射

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.qzcsbj.util;
 
import com.alibaba.fastjson.JSONObject;
import org.apache.poi.ss.usermodel.*;
import java.io.File;
import java.util.*;
 
/**
 * @博客 : www.cnblogs.com/uncleyong
 * @微信 : ren168632201
 * @描述 : <>
 */
public class Practice {
    public static void main(String[] args) {
        String parameters = "[{\"name\":\"jack\",\"age\":\"18\"},{\"name\":\"tom\",\"age\":\"19\"}]";
        List<User> users = JSONObject.parseArray(parameters, User.class);
        for (User user : users) {
            System.out.println(user);
        }
    }
}

 

输出结果:

1
2
User{name='jack', age='18'}
User{name='tom', age='19'}

 

补充:如果将列表元素转换为HashMap,则:

1
List<HashMap> maps = JSONObject.parseArray(parameters,HashMap.class);

参考:https://www.cnblogs.com/uncleyong/p/16676791.html

 

bak

原文会持续更新,原文地址:https://www.cnblogs.com/uncleyong/p/16683578.html

 

posted @   全栈测试笔记  阅读(1126)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2018-09-11 【转】idea与eclipse项目相互导入的过程
浏览器标题切换
浏览器标题切换end
点击右上角即可分享
微信分享提示