要记录一下 java 操作 Json 的api,每次用都记不牢,东找西找的,这里用的阿里的 fastjson
,在 Maven 中导入:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
这主要会用到 JSON
类,JSONObject
类和 JSONArray
类。后面二者都继承自 JSON
类。而且 JSONObject
实现了 Map<String,Object>
接口,而 JSONArray
实现了 List<Object>
接口。
JSONObject
可通过调用形如getString(String key)
的方法获取相应的键值JSON.parseObject(String str)
:JSON格式字符串转换为JSONObject
对象JSON.parseArray(String str)
:JSON数组格式字符串转换为JSONArray
对象JSON.parseObject(String str, new TypeReference<T>() {})
:JSON(或数组)格式的字符串转化为JavaBeanJSON.toJSONString(Object obj)
:JavaBean转换为JSON格式字符串(包括JSONObject
对象)JSON.toJSON(Object obj)
:JavaBean 转换为JSONObject
对象(需要强制转换为JSONObject
对象)
eg:
public class AboutAlibabaFastJson {
static String jsonObjStr = "{\"name\":\"Seiei\",\"age\":\"19\"}";
static String jsonArrayStr = "[{\"name\":\"Seiei\",\"age\":\"19\"},{\"name\":\"Taka\",\"age\":\"21\"}]";
// JSON格式的字符串转换为 JSONObject 对象或 JSONArray 对象
// JSONObject对象可以调用诸如 getString(String key) 的方法获取键值,查看源码发现是获取 Map对应的 object值,再进行强制转换
static void strToJSONObjet() {
// 转换为 JSONObject
JSONObject jsonObject = JSON.parseObject(jsonObjStr);
System.out.println(jsonObject.getString("name"));
System.out.println(jsonObject.getInteger("age"));
// JSONObject 转换为JSON 格式的字符串
System.out.println(JSON.toJSONString(jsonObject));
// 转换为 JSONArray
JSONArray jsonArray = JSON.parseArray(jsonArrayStr);
for (Object item: jsonArray) {
JSONObject jsonObjectItem = (JSONObject) item;
System.out.println(jsonObjectItem.getString("name"));
System.out.println(jsonObjectItem.getInteger("age"));
}
}
// JSON格式的字符串转化为 JavaBean
// JSON数组格式字符串转化为 JavaBean
static void strToJavaBean() {
// JSON 格式的字符串转化为 JavaBean
Student seiei = JSON.parseObject(jsonObjStr, new TypeReference<Student>() {});
System.out.println("JSON 格式的字符串转化为 JavaBean");
System.out.println(seiei.getName());
// JSON数组格式字符串转化为 JavaBean数组
// 不能使用 List,只能使用 ArrayList
ArrayList<Student> list = JSON.parseObject(jsonArrayStr, new TypeReference<ArrayList<Student>>() {});
for (Student item:list) {
System.out.println(item.getName());
System.out.println(item.getAge());
}
}
// JavaBean 转换为JSON格式的字符串
static void JavaBeanToStr() {
Student seiei = new Student();
seiei.setAge(18);
seiei.setName("seiei");
System.out.println(JSON.toJSONString(seiei));
}
// JavaBean 转换为JSONObject
static void JavaBeanToJSONObject() {
Student seiei = new Student();
seiei.setAge(18);
seiei.setName("seiei");
JSONObject jsonObject = (JSONObject) JSON.toJSON(seiei);
System.out.println(jsonObject.getString("name"));
}
public static void main(String[] args) {
// AboutAlibabaFastJson.strToJSONObjet();
// AboutAlibabaFastJson.strToJavaBean();
// AboutAlibabaFastJson.JavaBeanToStr();
// AboutAlibabaFastJson.JavaBeanToJSONObject();
}
}
class Student {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
String name;
Integer age;
}