Json字串與Object物件相互轉換的幾種方式
阿新 • • 發佈:2018-11-30
Json-Lib、Org.Json、Jackson、Gson、FastJson五種方式轉換json型別
只列舉了最省事的方式。不涉及複製情況和速度。
測試用例,一個User類,屬性name,age,location。重寫toString()。
public class User { private String name; private Integer age; private String location; public User() { } public User(String name) { this.name = name; } public User(String name, Integer age) { this.name = name; this.age = age; } public User(String name, Integer age, String location) { this.name = name; this.age = age; this.location = location; } 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; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + ", location='" + location + '\'' + '}'; } }
1、Json-Lib maven依賴如下,需注意<classifier>jdk15</classifier>,jar包區分jdk1.3和jdk1.5版本 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency> 測試demo import net.sf.json.JSONObject; public class JsonLibDemo { public static void main(String[] args) { //建立測試object User user = new User("李寧",24,"北京"); System.out.println(user); //轉成json字串 JSONObject jsonObject = JSONObject.fromObject(user); String json = jsonObject.toString(); System.out.println(json); //json字串轉成物件 JSONObject jsonObject1 = JSONObject.fromObject(json); User user1 = (User) JSONObject.toBean(jsonObject1,User.class); System.out.println(user1); } }
2、org.json maven依賴如下 <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20170516</version> </dependency> 測試demo import org.json.JSONObject; public class OrgJsonDemo { public static void main(String[] args) { //建立測試object User user = new User("李寧",24,"北京"); System.out.println(user); //轉成json字串 String json = new JSONObject(user).toString(); System.out.println(json); //json字串轉成物件 JSONObject jsonObject = new JSONObject(json); String name = jsonObject.getString("name"); Integer age = jsonObject.getInt("age"); String location = jsonObject.getString("location"); User user1 = new User(name,age,location); System.out.println(user1); } }
3、Jackson
maven依賴
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
測試demo
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonDemo {
public static void main(String[] args) {
//建立測試object
User user = new User("李寧",24,"北京");
System.out.println(user);
//轉成json字串
ObjectMapper mapper = new ObjectMapper();
try {
String json = mapper.writeValueAsString(user);
System.out.println(json);
//json字串轉成物件
User user1 = mapper.readValue(json,User.class);
System.out.println(user1);
} catch (java.io.IOException e) {
e.printStackTrace();
}
}
}
4、Gson
maven依賴
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.1</version>
</dependency>
測試demo
import com.google.gson.Gson;
public class GsonDemo {
public static void main(String[] args) {
//建立測試object
User user = new User("李寧",24,"北京");
System.out.println(user);
//轉成json字串
Gson gson = new Gson();
String json = gson.toJson(user);
System.out.println(json);
//json字串轉成物件
User user1 = gson.fromJson(json,User.class);
System.out.println(user1);
}
}
5、FastJson
maven依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.37</version>
</dependency>
測試demo
import com.alibaba.fastjson.JSON;
public class FastJsonDemo {
public static void main(String[] args) {
//建立測試object
User user = new User("李寧",24,"北京");
System.out.println(user);
//轉成json字串
String json = JSON.toJSON(user).toString();
System.out.println(json);
//json字串轉成物件
User user1 = JSON.parseObject(json,User.class);
System.out.println(user1);
}
}
json-lib時間有些久遠,jar包只更新到2010年
org.json用起來有些繁瑣
Jackson、Gson、FastJson只需一兩句話就可以搞定
原文出自:https://blog.csdn.net/n447194252/article/details/77747465