JavaJSON处理工具类JSONUtils

💬相关

网页——Java 中 JSON 的使用,菜鸟教程

https://www.runoob.com/w3cnote/java-json-instro.html

本工具类基于阿里巴巴的 Fastjson 包,需先在 Maven 的 pom.xml 加上依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency>

后在 Java 中引入包

import com.alibaba.fastjson.*

Fastjson 中 JSON 对象(JSONObj,相当于 List<Object>)的常用方法

  • JSON 键值对添加
    • put(String key, Object value):添加键值对 keyvalue
  • JSON 键对应的值获取
    • getBoolean(String key):根据键 key 获取 Boolean 类型的值
    • getInteger(String key):根据键 key 获取 Integer 类型的值
    • getFloat(String key):根据键 key 获取 Float 类型的值
    • getDouble(String key):根据键 key 获取 Double 类型的值
    • getLong(String key):根据键 key 获取 Long 类型的值
    • getByte(String key):根据键 key 获取 Byte 类型的值
    • getString(String key):根据键 key 获取 String 类型的值
    • getJSONObject(String key):根据键 key 获取值为 JSON 对象
    • getJSONArray(String key):根据键 key 获取值为 JSON 数组

Fastjson 中 JSON 数组(JSONArray,相当于 Map<String, Object>)的常用方法

  • JSON 对象添加与获取
    • add(JSONObject jsonObj):将 JSON 对象 jsonObj 添加进 JSON 数组
    • getJSONObject(int index):获取指定下标 index 对应的 JSON 对象

以上方法笔者觉得没有必要再封装进工具类了,直接调用就行

而其他的处理可以参考笔者的 JSON 处理工具类 JsonUtils 的以下方法

  • JSON 格式转化
    • strToJSONObj():JSON 字符串转 JSON 对象
    • strToJSONArr():JSON 字符串转 JSON 数组
    • strToObj():JSON 字符串转 Java 对象
    • strToList():JSON 字符串转列表
    • JSONObjToStr():JSON 对象转 JSON 字符串
    • JSONObjToObj():JSON 对象转 Java 对象
    • JSONArrToStr():JSON 数组转 JSON 字符串
    • JSONArrToList():JSON 数组转列表
    • objToStr():Java 对象转 JSON 字符串
    • objToJSONObj():Java 对象转 JSON 对象
    • listToJSONArr():列表转 JSON 数组
  • JSON 输入/输出
    • readJSONFile():从本地 JSON 文件读取出 JSON 字符串
    • generateMockJSON():生成含有的随机值 JSON 对象
    • outputJSONObj():读取并输出 JSON 对象的键值对(不含嵌套)
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import java.io.*;
import java.util.List;
import java.util.Map;
import java.util.Random;

public class JSONUtils {
    // JSON 对象对应的字符串是用大括号 {} 包裹起来的,如 {"code":"200","msg":"success","data":null}
    // JSON 数组对应的字符串是用方括号 [] 包裹起来的,如 [{"x":"1","y":"2"},{"x":"3","y":"4"}]

    // JSON 字符串转 JSON 对象
    public static JSONObject strToJSONObj(String jsonStr){
        return JSON.parseObject(jsonStr);
    }
    // JSON 字符串转 JSON 数组
    public static JSONArray strToJSONArr(String jsonStr){
        return JSON.parseArray(jsonStr);
    }
    // JSON 字符串转 Java 对象
    public static <T> T strToObj(String jsonStr, Class<T> clazz){
        return JSON.parseObject(jsonStr, clazz);
    }
    // JSON 字符串转列表
    public static <T> List<T> strToList(String jsonStr, Class<T> clazz){
        return JSON.parseArray(jsonStr, clazz);
    }
    // JSON 对象转 JSON 字符串
    public static String JSONObjToStr(JSONObject obj){
        return JSON.toJSONString(obj);
    }
    // JSON 对象转 Java 对象
    public static <T> T JSONObjToObj(JSONObject jsonObj, Class<T> clazz){
        if(jsonObj == null) return null;
        else return jsonObj.toJavaObject(clazz);
    }
    // JSON 数组转 JSON 字符串
    public static String JSONArrToStr(JSONArray jsonArr){
        return JSON.toJSONString(jsonArr);
    }
    // JSON 数组转列表
    public static <T> List<T> JSONArrToList(JSONArray jsonArr, Class<T> clazz){
        if(jsonArr == null) return null;
        else return jsonArr.toJavaList(clazz);
    }
    // Java 对象转 JSON 字符串
    public static String objToStr(Object obj){
        return JSON.toJSONString(obj);
    }
    // Java 对象转 JSON 对象
    public static JSONObject objToJSONObj(Object obj){
        return (JSONObject) JSON.toJSON(obj);
    }
    // 列表转 JSON 数组
    public static JSONArray listToJSONArr(List list){
        return JSONArray.parseArray(JSON.toJSONString(list));
    }
    // 从 JSON 文件读取出 JSON 对象
    public static JSONObject readJSONFile(String filename) {
        // filename 是包括路径的文件名
        String jsonStr = "";
        File jsonFile = new File(filename);
        try {
            FileReader fileReader = new FileReader(jsonFile);
            Reader reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8");
            int ch = 0;
            StringBuffer stringBuffer = new StringBuffer();
            while ((ch = reader.read()) != -1){
                stringBuffer.append((char) ch);
            }
            fileReader.close();
            reader.close();
            jsonStr = stringBuffer.toString();
        } catch (FileNotFoundException e){
            return null;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return JSON.parseObject(jsonStr);
    }
    // 读取并输出 JSON 对象的键值对(含嵌套)
    public static void printJSONObj(JSONObject jsonObj) {
        if (jsonObj != null) {
            for (Map.Entry<String, Object> entry : jsonObj.entrySet()) {
                String key = entry.getKey();
                Object value = entry.getValue();
                if (value instanceof JSONObject) {
                    // 嵌套对象
                    System.out.println(key + " = {");
                    printJSONObj((JSONObject) value);
                    System.out.println("}");
                } else {
                    // 非嵌套对象
                    System.out.println(key + " = " + value.toString());
                }
            }
        }
    }
    // 生成含有的随机值 JSON 对象
    public static JSONObject generateMockJSON(List<String> keys, Integer length) {
        // keys 是 JSON 中的键名,length 是每个键的随机生成值的长度
        // 调用示例如 generateMockJSON(Arrays.asList(new String[]{"id", "key1","key2"}),16)

        // baseStr 中每个字符是随机生成字符串中每个字符可能的取值
        String baseStr ="ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789";
        JSONObject jsonObj = new JSONObject();
        // 由 Random 生成随机数
        Random random = new Random();
        for (String key : keys) {
            StringBuffer buffer = new StringBuffer();
            for(int i = 0; i < length; i++){
                int number = random.nextInt(baseStr.length());
                buffer.append(baseStr.charAt(number));
            }
            jsonObj.put(key, buffer.toString());
        }
        return jsonObj;
    }
    // 将 JSON 对象写入文件
    public static void writeJSONFile(JSONObject jsonObject, String fileName) {
        try (FileWriter file = new FileWriter(fileName)) {
            file.write(jsonObject.toString());
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }

}
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值