簡體   English   中英

Json反序列化-預期為BEGIN_OBJECT,但為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM