首先,修复你的 PHP。
$Json = array(
array('test' => '1', 'message' => 'try it'),
array('test' => '2', 'message' => 'try it')
);
$final = array(
'error' => '1',
'json' => $Json
);
die(json_encode($final, JSON_FORCE_OBJECT));
您不需要对已经有效的 JSON 字符串进行编码。
一切正常
你从未使用过res
那里。您按原样打印了响应正文。
Log.w("Return", response.body().toString());
这看起来是错误的。响应已经是一个 JSON 字符串,所以toJson
没有必要。
jsonParser.parse(new Gson().toJson(response.body()));
您的错误是本例中的“JsonPrimitive”是一个字符串,而不是一个 JSON 对象。
你应该这样做
final String body = response.body().toString(); // Or use response.raw(), if want raw response string
JsonParser jsonParser = new JsonParser();
JsonObject res = jsonParser.parse(body).getAsJsonObject();
Log.w("Return", res.toString());
如果您想要数据,那么您可以拥有
JsonArray data = res.getAsJsonArray("data");
或者,您需要创建一个 POJO 并反序列化您的数据列表。
class Data {
String test, message;
}