年前在京东实习,和我一起实习的一妹子问我怎么对象转json,我。。。
嗯很简单呀,用fastjson就行了。fastjson是什么?
fastjson是什么?
Fastjson阿里巴巴工程师开源的一个 json 库:Fastjson,这个库在解析速度和易用性上来说都很不错。
在日志解析,前后端数据传输交互中,经常会遇到 String 与 map、json、xml 等格式相互转换与解析的场景,其中 json 基本成为了跨语言、跨前后端的事实上的标准数据交互格式。应该来说各个语言中 解析 json 的库都一大片,比如 python 都集成在了内置库中,成为标准 API,今天我们要聊的是 java 中如何方便的使用 json 格式。
推一个介绍json的网址
http://www.json.org/json-zh.html](http://www.json.org/json-zh.html
下面一个示例是如何使用Fastjson 把对象或数组转JSON
package test;
import java.util.ArrayList;
import java.util.List;
import com.alibaba.fastjson.JSON;
class User {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}
};
class UserGroup {
private String name;
private List<User> users = new ArrayList<User>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
@Override
public String toString() {
return "UserGroup [name=" + name + ", users=" + users + "]";
}
}
class FastJsonTest {
public static void main(String[] args) {
// 构建用户geust
User guestUser = new User();
guestUser.setName("guest");
guestUser.setAge(28);
// 构建用户root
User rootUser = new User();
rootUser.setName("root");
guestUser.setAge(35);
// 构建用户组对象
UserGroup group = new UserGroup();
group.setName("admin");
group.getUsers().add(guestUser);
group.getUsers().add(rootUser);
// 用户组对象转JSON串
String jsonString = JSON.toJSONString(group);
System.out.println("jsonString:" + jsonString);
// JSON串转用户组对象
UserGroup group2 = JSON.parseObject(jsonString, UserGroup.class);
System.out.println("group2:" + group2);
// 构建用户对象数组
User[] users = new User[2];
users[0] = guestUser;
users[1] = rootUser;
// 用户对象数组转JSON串
String jsonString2 = JSON.toJSONString(users);
System.out.println("jsonString2:" + jsonString2);
// JSON串转用户对象列表
List<User> users2 = JSON.parseArray(jsonString2, User.class);
System.out.println("users2:" + users2);
}
}
输出结果:
jsonString:{"name":"admin","users":[{"age":35,"name":"guest"},{"age":0,"name":"root"}]}
group2:UserGroup [name=admin, users=[User [name=guest, age=35], User [name=root, age=0]]]
jsonString2:[{"age":35,"name":"guest"},{"age":0,"name":"root"}]
users2:[User [name=guest, age=35], User [name=root, age=0]]
补充:
提一个注释:@JSONField
通过@JSONField注解设置json属性与成员变量对应关系
举个小例子:
public class News {
private String appId;
private String title;
private String intro;
private String source;
private String url;
private Date updateTime;
@Override
public String toString() {
return "News{" +
"appId='" + appId + '\'' +
", title='" + title + '\'' +
", intro='" + intro + '\'' +
", source='" + source + '\'' +
", url='" + url + '\'' +
", updateTime=" + updateTime +
'}';
}
@JSONField(name="app_id")
public String getAppId() {
return appId;
}
@JSONField(name="app_id")
public void setAppId(String appId) {
this.appId = appId;
}
@JSONField(name="title")
public String getTitle() {
return title;
}
@JSONField(name="title")
public void setTitle(String title) {
this.title = title;
}
@JSONField(name="intro")
public String getIntro() {
return intro;
}
@JSONField(name="intro")
public void setIntro(String intro) {
this.intro = intro;
}
@JSONField(name="source")
public String getSource() {
return source;
}
@JSONField(name="source")
public void setSource(String source) {
this.source = source;
}
@JSONField(name="url")
public String getUrl() {
return url;
}
@JSONField(name="url")
public void setUrl(String url) {
this.url = url;
}
@JSONField(name="update_time",format = "yyyy-MM-dd HH:mm:ss")
public Date getUpdateTime() {
return updateTime;
}
@JSONField(name="update_time",format = "yyyy-MM-dd HH:mm:ss")
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}
推荐一个详细的Fastjson讲解:https://www.w3cschool.cn/fastjson/fastjson-jsonfield.html