在我正在开发的应用中,我从网络服务中收到一个JSON字符串,我试图将此字符串转换为自定义类,如:
public class User {
public String userID;
public String description;
public int PIN;
public User(){}
}
这是吸气剂和制定者的方法。
我尝试使用Gson和方法来做这些事情:
Gson gson = new Gson();
User user = gson.fromJson(String fromServer, User.class);
其中String" fromServer"它已经在JSON编纂了
如果我在TextView中打印来自服务器的字符串,我有一个类似
的输出[{"userId":"admin","description":"administrator","PIN":"00001"}]
但是当我打电话时
user.getUserId();
我收到了NullPointerException并且我不知道为什么
答案 0 :(得分:1)
您的服务器正在返回一组用户。尝试像这样使用Gson:
Type listType = new TypeToken<ArrayList<User>>() {}.getType();
List<User> users = gson.fromJson(fromServer, listType);
User user = users.get(0);
答案 1 :(得分:0)
区分大小写。 java中的userID
和json中的userId
。
答案 2 :(得分:0)
上面的答案是正确的。您可以使用Json2Pojo创建User类,然后使用Gson将json转换为class来验证这一点。您的用户类应如下所示:
public class User {
private String userId;
private String description;
private String PIN;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getPIN() {
return PIN;
}
public void setPIN(String PIN) {
this.PIN = PIN;
}
}
现在您可以使用Gson将json转换为User。
Gson gson = new Gson();
User user = gson.fromJson(fromServer, User.class)