TransWikia.com

Обратиться к Object из ответа от сервера

Stack Overflow на русском Asked by Tagir Idrisov on November 27, 2020

На сервере лежит (как я понял) объект. В нем 2 значения – текст и цвет этого текста. Так вот – мне нужно получить этот текст и цвет. В данный момент все выводится вместе – TextView передается значение [{"text":"ВЕРНЕМ 10% БОНУСАМИ", "textColor": "#4c82a6"}],.

Мне нужно получить эти значения по отдельности

"tag": [
            {
                "text": "ВЕРНЕМ 10% БОНУСАМИ",
                "textColor": "#4c82a6"
            }
        ],

Модель

public class Item {

@SerializedName("id")
@Expose
private String id;
@SerializedName("name")
@Expose
private String name;
@SerializedName("image")
@Expose
private String image;
@SerializedName("isFavorite")
@Expose
private boolean isFavorite;
@SerializedName("prices")
@Expose
private Prices prices;
@SerializedName("full_set_prices")
@Expose
private Object fullSetPrices;
@SerializedName("isBestPrice")
@Expose
private boolean isBestPrice;
@SerializedName("tag")
@Expose
private Object tag;
@SerializedName("articul")
@Expose
private String articul;
@SerializedName("rating")
@Expose
private double rating;
@SerializedName("numberOfReviews")
@Expose
private int numberOfReviews;
@SerializedName("statusText")
@Expose
private String statusText;
@SerializedName("isAvailable")
@Expose
private boolean isAvailable;
@SerializedName("images")
@Expose
private List<String> images = null;
@SerializedName("categoryId")
@Expose
private String categoryId;

public String getId() {
    return id;
}

public String getName() {
    return name;
}


public String getImage() {
    return image;
}

public boolean isIsFavorite() {
    return isFavorite;
}


public Prices getPrices() {
    return prices;
}

public Object getFullSetPrices() {
    return fullSetPrices;
}

public boolean isIsBestPrice() {
    return isBestPrice;
}

public Object getTag() {
    return tag;
}

public void setTag(Object tag) {
    this.tag = tag;
}

public String getArticul() {
    return articul;
}

public void setArticul(String articul) {
    this.articul = articul;
}

public double getRating() {
    return rating;
}

public void setRating(double rating) {
    this.rating = rating;
}

public int getNumberOfReviews() {
    return numberOfReviews;
}

public void setNumberOfReviews(int numberOfReviews) {
    this.numberOfReviews = numberOfReviews;
}

public String getStatusText() {
    return statusText;
}

public void setStatusText(String statusText) {
    this.statusText = statusText;
}

public boolean isIsAvailable() {
    return isAvailable;
}

public void setIsAvailable(boolean isAvailable) {
    this.isAvailable = isAvailable;
}

public List<String> getImages() {
    return images;
}

public void setImages(List<String> images) {
    this.images = images;
}

public String getCategoryId() {
    return categoryId;
}

public void setCategoryId(String categoryId) {
    this.categoryId = categoryId;
}
}

Каким образом распарсить object?

One Answer

По факту вам нужно обработать json массив состоящий из объектов:

"tag": [
{
"text": "ВЕРНЕМ 10% БОНУСАМИ",
"textColor": "#4c82a6"
}
],

для этого я бы создал класс для хранения объектов:

public class TextFeatures{
String text;
String color;
}

дальше после получения json текста вам нужно будет десериализовать:

ObjectMapper mapper = new ObjectMapper();
MyClass[] myObjects = mapper.readValue(json, TextFeatures[].class);

либо так:

List<MyClass> myObjects = mapper.readValue(jsonInput, new TypeReference<List<MyClass>>(){});

Подобный вопрос. Вот есть гайды по работе с json. Инструмент для создания классов-моделей. Туториал 1 и туториал 2

Можно кстати и в ваш основной класс модель добавить такую обработку tag:

@SerializedName("tag")
@Expose
private Object tag;

ваш код создает объект, а можно сразу создавать массив:

@SerializedName("tag")
@Expose
private ArrayList<TextFeatures> tag;

и дальше брать данные из массива напрямую через ответ сервера.

Correct answer by Andrew on November 27, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP