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

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

要求

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

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

 

pom依赖

        <!-- 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

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"}]

 

实体类

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 + '\'' +
                '}';
    }
}

 

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

 

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);
        }
    }
}

 

输出结果:

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

 

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

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 @ 2022-09-11 10:02  全栈测试笔记  阅读(1001)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end