![](/img/trans.png)
[英]Error Expected BEGIN_OBJECT but was STRING - deserialization of an object inside of the string
[英]Json deserialization - expected BEGIN_OBJECT but was STRING
這是我收到的json:
{
"data": "{\"keystring\": \"ag5zfmNvcGFya3NlcnZlcnIUCxIHQ29tbWVudBiAgICAusaBCgw\"}",
"isSucceed": true,
"error": ""
}
這是應該反序列化的類和代碼:
public class ServerResponse {
private boolean isSucceed;
private String error;
private JSONObject data;
}
//this is the code line responsible for deserialization, responseJson = the JSON above
ServerResponse response = gson.fromJson(responseJson, ServerResponse.class);
由於某種原因,我得到了JsonSyntaxException:預期為BEGIN_OBJECT,但為STRING,我猜這與ServerResponse持有的數據對象有關,但我將其作為有效的Json接收到。
有任何想法嗎?
您的data
字段
private JSONObject data;
類型為JSONObject
。 但是您收到的對應鍵值對的值
"data": "{\"keystring\": \"ag5zfmNvcGFya3NlcnZlcnIUCxIHQ29tbWVudBiAgICAusaBCgw\"}",
是JSON字符串。 JSON字符串用於映射到Java String
。 因此,它期望使用JSON對象,但收到JSON字符串。
您可以編寫和注冊自己的TypeAdapter
來進行從JSON字符串到Java JSONObject
的轉換。 或者,您可以將字段更改為String
類型,並在需要時將其轉換為JSONObject
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.