由于项目需要,接触到了Gson,以前只是简单用过Json,Gson没有怎么用过。
Gson比Json强大,有toJson,和fromjson两种重要的方法。
要使用Gson,需要导入google-gson-2.2.4的JAR包,Gson数据之所以使用方便,我感觉主要是JavaBean结合使用,使得数据的获取变得简单,JavaBean里面只有属性,和get,set方法。
下面我们解析一个字符串{ "data":
{
"user":"{
\"username\":\"cxl\",\"password\":\"1234\",\"tel\":\"2021\",\"mobile\":\"545\"
}"
}
}
先分析一下这个Json字符串,data对应的是对象,user对应的是字符串,字符串获取出来对应的是对象。
GsonDemo.Java
package com;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class JsonArrayDemo {
private User user = null;
public static void main(String[] args) {
User user = new User();
user.setUsername("cxl");
user.setPassword("1234");
user.setMobile("545");
user.setTel("2021");
Gson gson = new Gson();
String str = gson.toJson(user);
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("user", str);
JsonObject jsonObject1 = new JsonObject();
jsonObject1.add("data", jsonObject);
System.out.println(jsonObject1.toString());
<span style="white-space:pre"> </span>// parse里面填入要解析的数据然后后面跟上getASJsonObject作为对象返回,获取data作为对象返回,获取user作为字符串返回
String jsonObject3 = new JsonParser().parse(jsonObject1.toString())
.getAsJsonObject().get("data").getAsJsonObject().get("user")
.getAsString();
<span style="white-space:pre"> </span>// fromJson里面填的一个是Json字符串,一个是对象的JavaBean对象,属性字段要一致。
user=gson.fromJson(jsonObject3, User.class);
System.out.println(user.getMobile());
}
}
User.java
package com;
public class User {
private String username;
private String password;
private String tel;
private String mobile;
public User(){
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
}
这样就解析了Json数据。用Gson解析的适合一对要对 对象,数组,字符串非常敏感,才能很好解析出来。