2012-11-17 134 views
0

我搜索了許多類似的問題「預計BEGIN_OBJECT但是STRING」,但對我來說沒有任何作用。
這是我的JSON字符串:
GSON解析錯誤:預期BEGIN_OBJECT但響應值爲空時爲STRING

{ 
"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; 
} 

我解析JSON這樣的:

Gson gson = new Gson(); 
GetFriendResponse response = gson.fromJson(jsonString,GetFriendResponse.class); 

我已經檢查,看看問題是當結果包含"from": "null"時,它會給出錯誤。
有什麼想法嗎?

+0

Gson已經過時了... Json lib非常好我發現... – Brian

+0

但是你真的應該在你的類中使用getter和setters而不是公共變量! – Brian

+0

你爲什麼說Gson已經過時了? – antew

回答

2

您應該使webservice返回null或{},而不是「null」。

+0

問題是我沒有更改Web服務的權限。 – R4j

+0

「null」不是JSON標準。因此,你將不得不創建一個非標準的json解析器。 –

+0

好的,我明白了。讓我試試這種方式。謝謝! – R4j

相關問題