欢迎访问宙启技术站
智能推送

如何编写Java函数处理JSON数据?

发布时间:2023-06-12 18:48:35

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,Java中使用json-lib/Cascade进行解析和构造JSON数据。

Java中的JSON处理主要分为两类:解析和构造。解析JSON数据时,需要将JSON字符串转换成Java对象或集合;构造JSON数据时,则需要将Java对象或集合转换成JSON字符串。下面分别介绍Java函数如何进行JSON数据的解析和构造。

一、JSON数据的解析

首先需要引入json-lib/Cascade库的jar包,这里以json-lib为例,示例代码如下:

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class JsonUtil {
    public static void main(String[] args) {
        //解析JSON字符串
        String jsonString = "{\"name\":\"小明\", \"age\":18,\"score\":[{\"math\":80,\"english\":90},{\"math\":90,\"english\":85}]}";
        JSONObject jsonObject = JSONObject.fromObject(jsonString);

        //获取JSON对象中的值
        String name = jsonObject.getString("name");
        int age = jsonObject.getInt("age");

        //获取嵌套的JSON数组
        JSONArray scores = jsonObject.getJSONArray("score");
        for (Object scoreObj : scores) {
            JSONObject score = (JSONObject) scoreObj;
            int mathScore = score.getInt("math");
            int englishScore = score.getInt("english");
            System.out.println("数学成绩:" + mathScore + ",英语成绩:" + englishScore);
        }
    }
}

上述代码展示了如何将JSON字符串转换成Java对象。使用JSONObject.fromObject()方法将JSON字符串转换成JSONObject对象,通过getString()、getInt()等方法获取其中的值。如果JSON中嵌套有数组,则需要使用getJSONArray()方法获取JSONArray对象,遍历JSONArray对象获取其中的JSONObject对象,再获取JSONObject对象中的值。需要注意的是,从JSON中获取的值可能为null,需要做好空值判断。

二、JSON数据的构造

将Java对象或集合转换成JSON数据,同样需要用到json-lib/Cascade库,示例代码如下:

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class JsonUtil {
    public static void main(String[] args) {
        //构造JSON数组
        List<Map<String, Object>> list = new ArrayList<>();
        Map<String, Object> map1 = new HashMap<>();
        map1.put("name", "小明");
        map1.put("age", 18);
        list.add(map1);

        Map<String, Object> map2 = new HashMap<>();
        map2.put("name", "小一");
        map2.put("age", 19);
        list.add(map2);

        JSONArray jsonArray = JSONArray.fromObject(list);
        String jsonArrayString = jsonArray.toString();
        System.out.println("JSON数组:" + jsonArrayString);

        //构造JSON对象
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name", "小明");
        jsonObject.put("age", 18);

        JSONArray scores = new JSONArray();
        JSONObject score1 = new JSONObject();
        score1.put("math", 80);
        score1.put("english", 90);

        JSONObject score2 = new JSONObject();
        score2.put("math", 90);
        score2.put("english", 85);

        scores.add(score1);
        scores.add(score2);

        jsonObject.put("scores", scores);

        String jsonObjectString = jsonObject.toString();
        System.out.println("JSON对象:" + jsonObjectString);
    }
}

上述代码展示了如何将Java对象或集合转换成JSON数据。首先构造一个Java对象或集合,然后使用JSONArray.fromObject()方法将List对象转换成JSONArray对象,使用JSONObject.put()方法将值存入JSONObject,使用JSONArray.add()方法将JSONObject对象存入JSONArray数组中,最后使用toString()方法将JSONArray或JSONObject对象转换成JSON字符串。需要注意的是,转换成JSON字符串时,库默认的日期格式为"yyyy-MM-dd HH:mm:ss",如果需要自定义日期格式,需要使用JsonConfig来配置日期格式。

总结起来,Java处理JSON数据主要分为解析和构造两部分,解析时使用JSONObject.fromObject()方法将JSON字符串转换成Java对象或集合,构造时使用JSONArray或JSONObject对象,将Java对象或集合转换成JSON数据。通过学习JSON数据的解析和构造,可以更高效地处理JSON数据,提高开发效率。