Java 处理 JSON
Java 处理 JSON 需要的第三方库:
对于与 JSONObject 进行转化的 Java 对象,都要将其实现为一个 JavaBean;
关于 JavaBean 最简单的规定如下:
- 提供一个默认的无参构造函数;
- 需要被序列化并且实现了Serializable接口;
- 可能有一系列可读写属性;
- 可能有一系列的"getter"或"setter"方法;
以下是示例用的JavaBean
1
public class User {
2
private String first = null;
3
private String lastName = null;
4
public User() {
5
}
6
public User(String first, String lastName) {
7
this.first = first;
8
this.lastName = lastName;
9
}
10
public String getFirst() {
11
return first;
12
}
13
public void setFirst(String first) {
14
this.first = first;
15
}
16
public String getLastName() {
17
return lastName;
18
}
19
public void setLastName(String lastName) {
20
this.lastName = lastName;
21
}
22
}
将 Java 对象转化为 JSON 字符串
要将 Java 对象转化的 JSON 格式的字符串,要先确保该 Java 对象已经实现为一个JavaBean,首先将 Java 对象转化为 JSONObject对象,再转化为字符串;
1
User user = new User("Alssad","Alex");
2
3
JSONObject jsonObj = JSONObject.fromObject(user);
4
String jsonStr = jsonObj.toString();
5
6
//jsonStr内容:
7
{"lastName":"Alex","first":"Alssad"}
将 Java 对象列表转化为 JSONArray,并转化为字符串
要将 Java 对象列表转化的 JSON 格式的字符串,首先将 Java 对象列表转化为 JSONArray对象,再转化为字符串;
1
List<User> list = new ArrayList<User>();
2
list.add(new User("John","Doe"));
3
list.add(new User("Anna","Smith"));
4
list.add(new User("Peter","Jones"));
5
6
JSONArray jsonArr = JSONArray.fromObject(list);
7
String jsonStr = jsonArr.toString();
8
9
//jsonStr内容:
10
[{"lastName":"Doe","first":"John"},{"lastName":"Smith","first":"Anna"},{"lastName":"Jones","first":"Peter"}]
将 JSON 字符串转化为 Java 对象
1
//{"lastName":"Alex","first":"Alssad"}
2
String jsonStr = "{\"lastName\":\"Alex\",\"first\":\"Alssad\"}";
3
4
JSONObject jsonObj = JSONObject.fromObject(jsonStr);
5
User user = (User)JSONObject.toBean(jsonObj,User.class);
将 JSON 字符串转化为 Java 对象数组
1
//[{"lastName":"Doe","first":"John"},{"lastName":"Smith","first":"Anna"},{"lastName":"Jones","first":"Peter"}]
2
String jsonStr = "[{\"lastName\":\"Doe\",\"first\":\"John\"},{\"lastName\":\"Smith\",\"first\":\"Anna\"},{\"lastName\":\"Jones\",\"first\":\"Peter\"}]";
3
4
JSONArray jsonArray = JSONArray.fromObject(jsonStr);
5
List<User> list = (List<User>)JSONArray.toList(jsonArray,User.class);