Мне нужно получить ссылку на аватарку пользователя ,через ответ json. Ответ выглядит примерно так.
{"response[{
"id":id,
"first_name":"имя",
"last_name":"фамилия",
"photo_max_orig":"https:\/\/pp.userapi.com\/c854520\/v854520272\/664fe\/hWDJhYkab1Y.jpg?ava=1"}]}
Но когда приходит ответ из-за того ,что в string нельзя использовать бэкслэши photo_max_orig присваивается null. Что нужно использовать ,чтобы убрать бэкслэши.
Вот сам код MainActivity
public class MainActivity extends AppCompatActivity {
TextView name;
ImageView photo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name = (TextView) findViewById(R.id.name);
photo = (ImageView) findViewById(R.id.imageView);
App.getApi().getInfo(ID,
"5.8",
TOKEN,
"photo_max_orig").enqueue(new Callback<ResponseArray>() {
@Override
public void onResponse(Call<ResponseArray> call,
Response<ResponseArray> response) {
Log.i("TAG", "name: " + response.body()
.getResponse()
.get(0)
.getFirstName());
Log.i("TAG", "second name: " + response.body()
.getResponse()
.get(0)
.getLastName());
Log.i("TAG", "id: " + response.body()
.getResponse()
.get(0)
.getId());
Log.i("TAG", "photo: " + response.body()
.getResponse()
.get(0)
.getPhoto());
Log.i("TAG", "request: " + call.request().url());
}
@Override
public void onFailure(Call<ResponseArray> call, Throwable t) {
Toast.makeText(MainActivity.this,
"An error occurred during networking",
Toast.LENGTH_SHORT).show();
Log.e("TAG", "onFailure: " + call);
Log.e("TAG", "onFailure: " + t);
}
});
}
VkApi интерфейс
public interface VkApi {
@GET("/method/users.get")
Call<ResponseArray> getInfo(@Query("user_id") String id,
@Query("v") String version,
@Query("access_token") String token,
@Query("fields") String photo);
}
POJO
public class Response {
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("first_name")
@Expose
private String firstName;
@SerializedName("last_name")
@Expose
private String lastName;
@SerializedName("photo_id")
@Expose
private String photo;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getPhoto() {
return photo;
}
public void setPhoto(String photo) {
this.photo = photo;
}
}
У вас в json
поле "photo_max_orig"
, а в POJO
почему-то ожидается "photo_id"
.
В аннотации @SerializedName()
нужно указывать имя поля, как оно есть в json
, из которого нужно взять значение.
@SerializedName("photo_max_orig")
@Expose
private String photo;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Дано два списка строками с целыми числами через пробелНеобходимо вывести уникальные элементы(1 раз - 1 элемент), которые присутствуют и в первом...
Есть JSONObject, и от туда я могу достать информацию только в переменную типа long При попытке прировнять значение из JSONObject к переменной типа int или...
Проблема в следующем: использую библиотеку Jsoup для парсинга HTML страниц, но загвоздка в том, что на некоторых страницах некоторые элементы...