Java GSON分析错误:应为BEGIN_对象,但在响应值为null时为字符串

Java GSON分析错误:应为BEGIN_对象,但在响应值为null时为字符串,java,android,json,Java,Android,Json,我搜索了许多类似的问题“预期的BEGIN_对象,但它是字符串”,但对我来说没有任何效果。这是我的json字符串: { "result": "true", "data": [{ "from": { "user_id": "user1", "name": "user1", "avatar": "http://zzzzzz.jpg" }, "request_id": "user1:user2" }, { "from": "

我搜索了许多类似的问题“预期的BEGIN_对象,但它是字符串”,但对我来说没有任何效果。
这是我的json字符串:

{
"result": "true",
"data": [{
    "from": {
        "user_id": "user1",
        "name": "user1",
        "avatar": "http://zzzzzz.jpg"
    },
    "request_id": "user1:user2"
},
{
    "from": "null",
    "request_id": "user1:user3"
}]
}
这是我的映射实体:

  public class GetFriendResponse {
    public boolean result;
    public List<FriendRequest> data;
  } 

  public class FriendRequest {
     public String request_id;
     public UserInfo from;
  }

  public class UserInfo {
    public String user_id;
    public String name;
    public String avatar;
 }
我检查了一下,发现问题是当结果包含
“from”:“null”
,它会给出一个错误

有什么想法吗?

您应该使Web服务返回null或{},而不是“null”

Gson已经过时了。。。我发现Json库非常优秀……但实际上,您应该在类中使用getter和setter,而不是公共变量!为什么你说Gson已经过时了?我读到它比更现代的库慢得难以置信。如果你有另一种方法为我工作,我真的很高兴,因为我无法更改web服务的json结果。我不在乎库是什么。问题是我没有更改web服务的权限。“null”不是JSON标准。[因此,您必须创建一个非标准json解析器。好的,我知道了。让我试试这种方法。谢谢!
 Gson gson = new Gson();
 GetFriendResponse  response = gson.fromJson(jsonString,GetFriendResponse.class);