如何编写Java函数处理JSON数据?
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数据,提高开发效率。
