Я пытаюсь выяснить, как извлечь данные из моего ответа JSON и просмотреть данные. У меня есть следующий Дооснащаемый код для запроса данных в формате JSON с моей REST API:Извлечение данных JSON с помощью дооснащения и Gson
final RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(URL)
.build();
final ApiEndpointInterface apiService = restAdapter.create(ApiEndpointInterface.class);
apiService.getJsonData(1, new Callback<User>() {
@Override
public void success(User user, Response response) {
Gson gson = new GsonBuilder().registerTypeAdapter(User.class, new Deserializer()).create();
User c = gson.fromJson(response.getBody().toString(), User.class);
}
@Override
public void failure(RetrofitError retrofitError) {
retrofitError.printStackTrace();
}
});
И мой десериализатор:
class Deserializer implements JsonDeserializer<User> {
@Override
public User deserialize(JsonElement je, Type type, JsonDeserializationContext jdc)
throws JsonParseException {
// Get the "content" element from the parsed JSON
JsonElement content = je.getAsJsonObject().get("data");
// Deserialize it. You use a new instance of Gson to avoid infinite recursion
// to this deserializer
return new Gson().fromJson(content, User.class);
}
}
JSON ответ:
{
"success":true,
"data":[
{
"id":"1",
"username":"User1"
},
{
"id":"2",
"username":"User2"
}
]
}
В success
обратного вызова ДООСНАСТКЕ, в Я не уверен, как на самом деле перебирать элементы данных и извлекать из него данные (например, имя пользователя).
а/данных не является объектом JSON. b/вам не нужно вызывать gson самостоятельно, так как вы можете видеть, что ваш обратный вызов уже дает вам объект User. (но для этого вам нужно будет предоставить объект gson для модифицированного конструктора) – njzk2