【发布时间】:2019-09-25 12:26:06
【问题描述】:
我正在尝试通过 android 中的 gson 解析 php 中的 json 字符串,但一直出错
在 php 脚本中我有
return json_encode(["valid"=>true,"token"=>$tokenUser->token]);
在我的 android 上我有响应方法
void onApiResponse(String response){
Log.i("test", response) //gives "{\"valid\":false,\"token\":null}"
//using gson below
VerificationResponse verificationResponse = new Gson().fromJson(response,VerificationResponse.class);
}
我的验证响应类有
private class VerificationResponse{
private Boolean valid;
private String token;
public Boolean getValid() {
return valid;
}
public String getToken() {
return token;
}
}
每当我尝试通过 verificationResponse.getValid() 访问 isValid getter 时,都会出现错误
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException:
Expected BEGIN_OBJECT but was STRING
我错过了什么?
【问题讨论】:
-
我经常用来验证我的模型和我的 JSON 是否彼此同步的一种方法是采用相反的方式。创建一个新的
VerificationResponse,在那里填充它的两个字段,然后让 Gson 使用gson.toJson(yourVerificationResponse)将其序列化为 JSON 并进行比较。我认为引号的"\"转义很奇怪...... -
JSONObject jsonObject = new JSONObject(response); VerificationResponse 验证响应 = new Gson().fromJson(jsonObject,VerificationResponse.class);
-
@KishanMaurya
JSONObject应该是JsonObject(如果您使用的是 Gson)。 -
@KishanMaurya 出现错误无法解析方法 fromJson(org.json.JSONOBJECT, class)
-
@MartinMarconcini 在使用 JsonObject 时出现错误 JsonObject cannot be applied to java.lang.String