最近在看公司项目源码,竟然对JSON.parseObject和JSON.toJsonString的这两个方法感到特别陌生(自己较笨,不能代表其他人的水平),在这里回顾一下,顺便记录下来,以便后续查看。
首先,说一下json的格式。JSON语法是JavaScript对象表示法语法的子集。
下面来演示是如何用的。
首先引入fastjson的jar包
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sht</groupId>
<artifactId>SpringLoaderTest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>SpringLoaderTest</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
</dependencies>
</project>
然后建立java对象
package com.sht.demo20180623;
/**
* 用于测试json的类
* @author SHT
*
*/
public class JsonStudent {
private String name;
private int age;
private String sex;
@Override
public String toString() {
return "JsonStudent [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
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;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
测试类
package com.sht.demo20180623;
import com.alibaba.fastjson.JSON;
/**
* 主要用来阐述Json.parseObject(String str, Class<?> c)和Json.toJsonString(Class<?> c)
* @author SHT
*
*/
public class JsonDemo {
public static void main(String[] args) {
String s = "{'name':'sunhaiting','age':'30','sex':'male'}";
JsonStudent js = JSON.parseObject(s, JsonStudent.class);
System.out.print("将json字符串转化为对象:");
System.out.println(js.toString());
String jsonString = JSON.toJSONString(js);
System.out.print("将json对象转化为json字符串:");
System.out.println(jsonString);
}
}
输出结果
将json字符串转化为对象:JsonStudent [name=sunhaiting, age=30, sex=male]
将json对象转化为json字符串:{"age":30,"name":"sunhaiting","sex":"male"}
这里可能有人会有疑问:如果json字符串中内容与java对象中的内容不是一一对应的话会怎么处理呢?对两个方法分别进行说明。
JSON.parseObject(String str, Class<?> c) 将json字符串转化为对象时,如果str中字段不在java对象中,则多余的字段忽略;如果str中字段少于java对象中,则转化后的java对象中响应字段为空。
JSON.toJsonString(Class<?> c) 同理。