JSON中toJSONString、ParseObject、parseArray的作用以及用 com.alibaba.fast.JSONArray解析字符串或者List集合

本文深入解析了FastJSON库中四个核心方法:parseArray、toJSONString、ParseObject和JSONArray的使用场景与实现方式。通过具体代码示例,展示了如何将字符串转换为List、将集合转换为字符串、将字符串转换为对象以及解析JSON数组。

(1)parseArray的作用

import com.alibaba.fastjson.JSON;
import lombok.Data;
import org.junit.Test;

import java.util.List;

public class JSONTest {
    @Test
    public void JSONTest() {
        //从Redis中查出来的字符串
        String str = "[{\"ct_pt\":\"xxx\",\"data_time\":\"xxx\",\"mp_id\":" +
                "\"xxx\",\"mp_name\":\"xxx\",\"pos_p_e_total_e\":\"xxx\",\"" +
                "pos_p_e_total_s\":\"xxx\",\"pos_p_e_total_sub\":\"xxx\"," +
                "\"pos_p_e_total_subQuantity\":\"xxx\"}]";
        //将字符串转换成list
        List<Emp> parseArray = JSON.parseArray(str, Emp.class);
        for (Emp emp : parseArray){
            System.out.println(emp);
        }
    }

}

@Data
class Emp {
    private String ct_pt;
    private String data_time;
    private String mp_id;
    private String mp_name;
    private String pos_p_e_total_e;
    private String pos_p_e_total_s;
    private String pos_p_e_total_sub;
    private String pos_p_e_total_subQuantity;
}

输出结果:
在这里插入图片描述

(2)toJSONString的作用

package com.navict.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class JSONTest {
    @Test
    public void JSONTest() {
        List<Emp> list = new ArrayList<>();

        Emp emp = new Emp();
        emp.setCt_pt("1");
        emp.setData_time(new Date());
        emp.setMp_id("1");
        emp.setMp_name("李四");
        emp.setPos_p_e_total_e("1");
        list.add(emp);
        //将集合转换成字符串
        String str = JSON.toJSONString(list);
        System.out.println(str);
    }

}

@Data
class Emp {
    private String ct_pt;
    private Date data_time;
    private String mp_id;
    private String mp_name;
    private String pos_p_e_total_e;
}

运行结果
在这里插入图片描述


(3)ParseObject的作用

package com.navict.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class JSONTest {
    @Test
    public void JSONTest() {
        String str = "{\"ct_pt\":\"xxx\",\"data_time\":\"xxx\",\"mp_id\":" +
                "\"xxx\",\"mp_name\":\"xxx\",\"pos_p_e_total_e\":\"xxx\",\"" +
                "pos_p_e_total_s\":\"xxx\",\"pos_p_e_total_sub\":\"xxx\"," +
                "\"pos_p_e_total_subQuantity\":\"xxx\"}";
        //将字符串转换成对象
        JSONObject jsonObject = JSONObject.parseObject(str);
        String ct_pt = (String)jsonObject.get("ct_pt");
        String mp_id = (String)jsonObject.get("ct_pt");
       // Date data_time =(Date) jsonObject.get("data_time");
        String mp_name = (String)jsonObject.get("mp_name");
        String pos_p_e_total_e = (String)jsonObject.get("pos_p_e_total_e");
        Emp testEmp = new Emp();
        testEmp.setMp_id(mp_id);
        testEmp.setPos_p_e_total_e(pos_p_e_total_e);
        testEmp.setMp_name(mp_name);
        //testEmp.setData_time(data_time);
        testEmp.setCt_pt(ct_pt);
        System.out.println(JSONObject.toJSON(testEmp));
        System.out.println(jsonObject.get("ct_pt"));
    }

}

@Data
class Emp {
    private String ct_pt;
    private Date data_time;
    private String mp_id;
    private String mp_name;
    private String pos_p_e_total_e;
}

在这里插入图片描述

(4) com.alibaba.fast.JSONArray的作用

package com.navict.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class JSONTest {
    @Test
    public void JSONTest() {
        String str = "{\"ct_pt\":\"xxx\",\"data_time\":\"xxx\",\"mp_id\":" +
                "\"xxx\",\"mp_name\":\"xxx\",\"pos_p_e_total_e\":\"xxx\",\"" +
                "pos_p_e_total_s\":\"xxx\",\"pos_p_e_total_sub\":\"xxx\"," +
                "\"pos_p_e_total_subQuantity\":\"xxx\"}";
        //将字符串转换成对象
        Emp emp = JSONArray.parseObject(str, Emp.class);
        System.out.println(JSONObject.toJSONString(emp));
    }

}

@Data
class Emp {
    private String ct_pt;
    private Date data_time;
    private String mp_id;
    private String mp_name;
    private String pos_p_e_total_e;
}

运行结果:
在这里插入图片描述

### FastJSON 转换 `List<CompanyCredit>` 的完整写法 #### 1. 基础转换方式 ```java import com.alibaba.fastjson.JSON; import java.util.List; // JSON字符串 -> List<CompanyCredit> String jsonStr = "[{...}, {...}]"; // 你的JSON数组字符串 List<CompanyCredit> blackList = JSON.parseArray(jsonStr, CompanyCredit.class); ``` #### 2. 实际应用场景示例 ```java // 示例:从API响应中解析 String apiResponse = "[{\"id\":\"1\",\"zzmc\":\"测试公司\"}, {\"id\":\"2\",\"zzmc\":\"示例企业\"}]"; List<CompanyCredit> blackList = JSON.parseArray(apiResponse, CompanyCredit.class); // 遍历验证 blackList.forEach(company -> { System.out.println(company.getZzmc()); // 输出公司名称 }); ``` #### 3. 处理复杂JSON结构(如嵌套对象) 如果JSON包含嵌套对象(例如日期格式化): ```java @Data public class CompanyCredit { @JSONField(format = "yyyy-MM-dd HH:mm:ss") private Date xyZhgxsj; // 其他字段... } // 转换时会自动处理日期格式 String jsonWithDate = "[{\"xyZhgxsj\":\"2023-01-01 12:00:00\"}]"; List<CompanyCredit> list = JSON.parseArray(jsonWithDate, CompanyCredit.class); ``` #### 4. 反向操作(对象转JSON) ```java // List<CompanyCredit> -> JSON字符串 String outputJson = JSON.toJSONString(blackList); System.out.println(outputJson); ``` #### 5. 完整工具类示例 ```java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; public class JsonUtils { /** * 将JSON数组字符串转换为对象列表 * @param jsonStr JSON字符串 * @param clazz 目标类 * @return 对象列表 */ public static <T> List<T> parseJsonArray(String jsonStr, Class<T> clazz) { return JSON.parseArray(jsonStr, clazz); } /** * 将对象列表转换为JSON字符串 */ public static String toJsonString(List<?> list) { return JSON.toJSONString(list); } } // 使用示例 List<CompanyCredit> result = JsonUtils.parseJsonArray(jsonStr, CompanyCredit.class); ``` ### 关键注意事项 1. **字段映射**:确保JSON键名与实体类字段名一致(或使用`@JSONField(name="xxx")`指定) 2. **日期处理**:推荐使用`@JSONField(format)`注解 3. **空值处理**:FastJSON默认会忽略null值字段,可通过`SerializerFeature`配置
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值