Как убрать бэкслэши из ответа json

107
21 марта 2021, 14:20

Мне нужно получить ссылку на аватарку пользователя ,через ответ 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;
}

}

Answer 1

У вас в json поле "photo_max_orig", а в POJO почему-то ожидается "photo_id".
В аннотации @SerializedName() нужно указывать имя поля, как оно есть в json, из которого нужно взять значение.

@SerializedName("photo_max_orig")
@Expose
private String photo;
READ ALSO
Java Logger (java.util.logging)

Java Logger (java.util.logging)

Мой лог выводиться в таком виде:

104
Как лучше найти и вывести одинаковые элементы из двух списков?

Как лучше найти и вывести одинаковые элементы из двух списков?

Дано два списка строками с целыми числами через пробелНеобходимо вывести уникальные элементы(1 раз - 1 элемент), которые присутствуют и в первом...

89
Как достать данные в int или в String из JSON (Java и json-simple)

Как достать данные в int или в String из JSON (Java и json-simple)

Есть JSONObject, и от туда я могу достать информацию только в переменную типа long При попытке прировнять значение из JSONObject к переменной типа int или...

107
Jsoup.connect() Получить документ полностью

Jsoup.connect() Получить документ полностью

Проблема в следующем: использую библиотеку Jsoup для парсинга HTML страниц, но загвоздка в том, что на некоторых страницах некоторые элементы...

113