这是我的JSON字符串:"{'userName' : 'Bachooo'}"
将JSON字符串转换为 LoginVO 逻辑是:
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
LoginVO loginFrom = gson.fromJson(jsonInString, LoginVO.class);
System.out.println("userName " + loginFrom.getUserName()); // output null
我的 LoginVO.class 是:
public class LoginVO {
private String userName;
private String password;
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;
}
}
注意我正在使用 jdk 1.8.0_92
对于这个问题,loginForm.getUserName()的输出是NULL
而不是"Bachooo"
?
答案 0 :(得分:3)
由于您要在excludeFieldsWithoutExposeAnnotation()
上设置GsonBuilder
配置,因此您必须在要序列化/反序列化的字段上添加@Expose
注释。
因此,为了让excludeFieldsWithoutExposeAnnotation()
序列化/反序列化您的字段,您必须添加该注释:
@Expose
private String userName;
@Expose
private String password;
或者,您可以从excludeFieldsWithoutExposeAnnotation()
删除GsinBuilder
。
答案 1 :(得分:-1)
请试试。你使用Gson jar来运行它。
class AngilinaJoile{
private String name;
Here you generate setter and getter methods.
setter..
getter..
}
Gson gson = new Gson();
String jsonInString = "{'name' : 'kumaresan perumal'}";
AngilinaJoile angel = gson.fromJson(jsonInString, AngilinaJoile.class);