java Gson fromJson(),来自OkHttp3的有效Json响应无效(已关闭)
我正在制作一个安卓应用程序(显然是Java),并将AsyncTask用于OkHttp3请求。我想将返回的json字符串解析为一个简单的消息对象,但它不起作用
我的答复如下:
String res_body_str = response.body().string(); // "{\"msg\":\"Do it!\"}"
当我试图用gson解析它时,它失败了
我总是喜欢java。lang.IllegalStateException:应为BEGIN_对象,但在第1行第2列为字符串
下面是我的一些代码:
我的异步任务类
protected Message doInBackground(Message...msg) {
Message res;
String req_body_str = g.toJson(msg[0]);
String res_body_str;
RequestBody body = RequestBody.create(JSON, req_body_str);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
try {
Response response = client.newCall(request).execute(); //client is static OkHttpClient
res_body_str = response.body().string(); // "{\"msg\":\"Do it!\"}"
} catch (IOException e) {
res_body_str = "{\"msg\":\"Connection Failed. Try again later.\"}";
}
////////Everything works to this point
try {
res = g.fromJson(res_body_str, Message.class); //ERROR
} catch (Exception e) {
res = new Message(res_body_str);
}
return res;
}
我的信息类
public class Message {
private String msg;
public Message(String msg) {
this.msg = msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getMsg() {
return msg;
}
}
当我在第二个try/catch语句之前写入res_body_str = "{\"msg\":\"Do it!\"}";
时,它会工作,但不会与响应一起工作
编辑1(只是为了清晰):
字符串是"{\"msg\":\"Do it!\"}"
,并且res_body_str.charAt(0);
返回{
编辑2:
System.err.println(res_body_string);
打印{"msg":"Do it!"}
System.err.println(res_body_string.charAt(0));
打印{
System.err.println(res_body_string.charAt(1));
打印"
System.err.println(res_body_string.charAt(2));
打印m
编辑3:它可以工作
我让它工作了。我不得不替换"
和\
res_body_str = response.body().string().replaceAll("\"","");
res_body_str = res_body_str.replaceAll("\\\\","'");
正式的字符串是" "{\"msg\":\"Do it!\"}" "
,但由于某些原因,没有打印出未转义的双QOUTE。我看到它时,我把所有逃出的双qoutes都换成了零
共 (0) 个答案