Java操作json有很多种派别,下面总结一下热门的派别 ,alibaba fastjson 的JSONObject。
JSONObject 是一种数据结构,操作起来类似map。可以把对象转换成字符串在服务之间传送,也可以把字符串解析为Java对象使用。
引入使用先添加Jar 包:
<!--alibaba fastjosn jsonObject-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.48</version>
</dependency>
使用示例:
先添加一个测试的Java 实体类:
public class User {
private String name;
private Integer age;
private String password;
//省略get,set方法
public User(String name, Integer age, String password) {
this.name = name;
this.age = age;
this.password = password;
}
public User() {
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", password='" + password + '\'' +
'}';
}
}
使用示例,方法旁边有说明,有兴趣的可以复制过去执行一下:
public class TestAlibabaJsonObject {
public static void main(String[] args) {
//新建JSONObject对象
JSONObject object1 = new JSONObject();
//1.在JSONObject对象中放入键值对
object1.put("name", "张三");
object1.put("name1", "张三1");
object1.put("name2", "张三2");
//2.根据key获取value
String name = (String) object1.get("name");
System.out.println(name);
//3.获取JSONObject中的键值对个数
int size = object1.size();
System.out.println(size);
//4.判断是否为空
boolean result = object1.isEmpty();
System.out.println(result);
//5.是否包含对应的key值,包含返回true,不包含返回false
boolean isContainsKeyResult = object1.containsKey("name");
System.out.println(isContainsKeyResult);
//6.是否包含对应的value值,包含返回true,不包含返回false
boolean isContainsValueResult = object1.containsValue("王五");
System.out.println(isContainsValueResult);
String s = object1.toJSONString();//JSONObject转字符串
JSONObject jsonObject = JSONObject.parseObject(s);//字符串转JSONObject
System.out.println(jsonObject.getString("name1"));
System.out.println("--------------");
User user = new User("陈志豪",18,"123456");
JSONObject jsonUser = (JSONObject) JSONObject.toJSON(user);//Java对象转JSONObject对象
System.out.println(jsonUser.getString("password"));
String userStr = jsonUser.toJSONString();
System.out.println(userStr);
User user1 = JSONObject.parseObject(userStr, User.class);//字符串转Java对象
JSONObject.toJavaObject(jsonUser,User.class);//JSONObject 对象转Java对象
System.out.println(user1);
}
}