Как преобразовать строку JSON из библиотеки GSON в объект JSON? - PullRequest
0 голосов
/ 26 апреля 2019

Я знаю, что у некоторых тем есть похожий вопрос, но я не могу найти решение для меня.

Я новичок в разработке мобильных приложений. Я немного запутался, как конвертировать JSON string в обычный JSON.

поэтому у меня есть JSON как string, как показано ниже, этот json string генерируется из GSON, который преобразует Java объект в этот JSON string:

продукты =% 5B% 7B% 22customers_basket_date_added% 22% 3A% 222019-04-22% 2012% 3A28% 3A41% 22% 2C% 22customers_basket_id% 22% 3A4% 2C% 22customers_basket_product% 22% 3A% 7B% 22attributes% 22% 3A% 5B% 5D% 2C% 22attributes_price% 22% 3A% 220,0% 22% 2C% 22categories_id% 22% 3A8% 2C% 22categories_name% 22% 3A% 22Kemasan% 20Botol% 22% 2C% 22customers_basket_quantity% 22% 3À6% 2C% 22images% 22% 3A% 5B% 5D% 2C% 22isSale_product% 22% 3A% 220% 22% 2C% 22language_id% 22% 3A0% 2C% 22motorist_id% 22% 3A0% 2C% 22motorist_name% 22% 3A% 22% 22% 2C% 22id_jenis_products% 22% 3A0% 2C% 22qty_orders_max% 22% 3A12% 2C% 22qty_orders_min% 22% 3À6% 2C% 22qty_promo_bought% 22% 3A0% 2C% 22trans_limit% 22% 3A0% 2C% 22trans_live% 22% 3A0% 2C% 22manufacturers_id% 22% 3A0% 2C% 22parent_id% 22% 3A0% 2C% 22products_description% 22% 3A% 22PROMO% 20APRIL% 20MURAH% 21% 5Cu003cbr% 5Cu003e% 5cr% 5CnRekomendasi% 20harga% 20jual% 20warung% 20Rp% 203,500% 2Fbotol% 5Cu003cbr% 5Cu003e% 5cr% 5CnUntung% 20Rp% 201,300% 20% 2859% 25% 29% 5Cu003cbr% 5Cu003e% 5cr% 5CnPembelian% 20мин% 206% 20botol% 2C% 20maks% 2012% 20botol% 22% 2C% 22final_price% 22% 3A% 222200,0% 22% 2C% 2 2products_id% 22% 3A140% 2C% 22products_image% 22% 3A% 22resources% 2Fassets% 2Fimages% 2Fproduct_images% 2F1555722212.promo-larutan-kakitiga.jpg% 22% 2C% 22products_liked% 22% 3A0% 2C% 22products_model% 22% 3A% 22% 22% 2C% 22products_name% 22% 3A% 22PROMO% 20Cap% 20Kaki% 20Tiga% 20Botol% 20200% 20мл% 22% 2C% 22products_ordered% 22% 3A0% 2C% 22products_price% 22% 3A% 222200,0% 22% 2C% 22products_quantity% 22% 3A1% 2C% 22products_status% 22% 3A0% 2C% 22products_tax_class_id% 22% 3A0% 2C% 22products_viewed% 22% 3A0% 2C% 22products_weight% 22% 3A% 221% 22% 2C% 22products_weight_unit% 22% 3A% 22Btl% 22% 2C% 22sort_order% 22% 3A0% 2C% 22tax_class_id% 22% 3A0% 2C% 22tax_priority% 22% 3A0% 2C% 22tax_rates_id% 22% 3A0% 2C% 22tax_zone_id% 22% 3A0% 2C% 22total_price% 22% 3A% 2213200,0% 22% 7D% 2C% 22customers_basket_product_attributes% 22% 3A% 5B% 5D% 2C% 22customers_id% 22% 3A0% 7D% 5D & состояние = 0

эта строка JSON генерируется из

new Gson().toJson(cartItemsList)

и cartItemsList является экземпляром класса CartProduct

public class CartProduct {


    @SerializedName("customers_id")
    @Expose
    private int customersId;
    @SerializedName("customers_basket_id")
    @Expose
    private int customersBasketId;
    @SerializedName("customers_basket_date_added")
    @Expose
    private String customersBasketDateAdded;
    @SerializedName("customers_basket_product")
    @Expose
    private ProductDetails customersBasketProduct;
    @SerializedName("customers_basket_product_attributes")
    @Expose
    private List<CartProductAttributes> customersBasketProductAttributes = new ArrayList<CartProductAttributes>();



    public int getCustomersId() {
        return customersId;
    }

    public void setCustomersId(int customersId) {
        this.customersId = customersId;
    }

    public int getCustomersBasketId() {
        return customersBasketId;
    }

    public void setCustomersBasketId(int customersBasketId) {
        this.customersBasketId = customersBasketId;
    }

    public String getCustomersBasketDateAdded() {
        return customersBasketDateAdded;
    }

    public void setCustomersBasketDateAdded(String customersBasketDateAdded) {
        this.customersBasketDateAdded = customersBasketDateAdded;
    }

    public ProductDetails getCustomersBasketProduct() {
        return customersBasketProduct;
    }

    public void setCustomersBasketProduct(ProductDetails customersBasketProduct) {
        this.customersBasketProduct = customersBasketProduct;
    }

    public List<CartProductAttributes> getCustomersBasketProductAttributes() {
        return customersBasketProductAttributes;
    }

    public void setCustomersBasketProductAttributes(List<CartProductAttributes> customersBasketProductAttributes) {
        this.customersBasketProductAttributes = customersBasketProductAttributes;
    }

}

и класс CartProductAttributes

public class CartProductAttributes implements Parcelable {

    @SerializedName("customers_basket_id")
    @Expose
    private int customersBasketId;
    @SerializedName("products_id")
    @Expose
    private String productsId;
    @SerializedName("option")
    @Expose
    private Option option;
    @SerializedName("values")
    @Expose
    private List<Value> values = new ArrayList<Value>();


    public CartProductAttributes() {
    }


    public int getCustomersBasketId() {
        return customersBasketId;
    }

    public void setCustomersBasketId(int customersBasketId) {
        this.customersBasketId = customersBasketId;
    }

    public String getProductsId() {
        return productsId;
    }

    public void setProductsId(String productsId) {
        this.productsId = productsId;
    }

    /**
     *
     * @return
     *     The option
     */
    public Option getOption() {
        return option;
    }

    /**
     *
     * @param option
     *     The option
     */
    public void setOption(Option option) {
        this.option = option;
    }

    /**
     *
     * @return
     *     The values
     */
    public List<Value> getValues() {
        return values;
    }

    /**
     *
     * @param values
     *     The values
     */
    public void setValues(List<Value> values) {
        this.values = values;
    }



    //********** Describes the kinds of Special Objects contained in this Parcelable Instance's marshaled representation *********//

    @Override
    public int describeContents() {
        return 0;
    }



    //********** Writes the values to the Parcel *********//

    public void writeToParcel(Parcel parcel_out, int flags) {
        parcel_out.writeValue(customersBasketId);
        parcel_out.writeValue(productsId);
        parcel_out.writeParcelable(option, flags);
        parcel_out.writeList(values);
    }



    //********** Generates Instances of Parcelable class from a Parcel *********//

    public static final Creator<CartProductAttributes> CREATOR = new Creator<CartProductAttributes>() {

        // Creates a new Instance of the Parcelable class, Instantiating it from the given Parcel
        @Override
        public CartProductAttributes createFromParcel(Parcel parcel_in) {
            return new CartProductAttributes(parcel_in);
        }

        // Creates a new array of the Parcelable class
        @Override
        public CartProductAttributes[] newArray(int size) {
            return new CartProductAttributes[size];
        }
    };



    //********** Retrieves the values from the Parcel *********//

    protected CartProductAttributes(Parcel parcel_in) {
        this.customersBasketId = parcel_in.readInt();
        this.productsId = parcel_in.readString();

        this.option = parcel_in.readParcelable(Option.class.getClassLoader());

        this.values = new ArrayList<Value>();
        parcel_in.readList(values, Value.class.getClassLoader());
    }

}

и вот класс ProductDetails

public class ProductDetails implements Parcelable {


    @SerializedName("products_id")
    @Expose
    private int productsId;
    @SerializedName("products_quantity")
    @Expose
    private int productsQuantity;
    @SerializedName("products_model")
    @Expose
    private String productsModel;
    @SerializedName("products_image")
    @Expose
    private String productsImage;
    @SerializedName("products_price")
    @Expose
    private String productsPrice;
    @SerializedName("discount_price")
    @Expose
    private String discountPrice;
    @SerializedName("products_date_added")
    @Expose
    private String productsDateAdded;
    @SerializedName("products_last_modified")
    @Expose
    private String productsLastModified;
    @SerializedName("products_date_available")
    @Expose
    private String productsDateAvailable;
    @SerializedName("products_weight")
    @Expose
    private String productsWeight;
    @SerializedName("products_weight_unit")
    @Expose
    private String productsWeightUnit;
    @SerializedName("products_status")
    @Expose
    private int productsStatus;
    @SerializedName("products_ordered")
    @Expose
    private int productsOrdered;
    @SerializedName("products_liked")
    @Expose
    private int productsLiked;
    @SerializedName("language_id")
    @Expose
    private int languageId;
    @SerializedName("products_name")
    @Expose
    private String productsName;
    @SerializedName("products_description")
    @Expose
    private String productsDescription;
    @SerializedName("products_url")
    @Expose
    private String productsUrl;
    @SerializedName("products_viewed")
    @Expose
    private int productsViewed;
    @SerializedName("products_tax_class_id")
    @Expose
    private int productsTaxClassId;
    @SerializedName("tax_rates_id")
    @Expose
    private int taxRatesId;
    @SerializedName("tax_zone_id")
    @Expose
    private int taxZoneId;
    @SerializedName("tax_class_id")
    @Expose
    private int taxClassId;
    @SerializedName("tax_priority")
    @Expose
    private int taxPriority;
    @SerializedName("tax_rate")
    @Expose
    private String taxRate;
    @SerializedName("tax_description")
    @Expose
    private String taxDescription;
    @SerializedName("tax_class_title")
    @Expose
    private String taxClassTitle;
    @SerializedName("tax_class_description")
    @Expose
    private String taxClassDescription;
    @SerializedName("categories_id")
    @Expose
    private int categoriesId;
    @SerializedName("categories_name")
    @Expose
    private String categoriesName;
    @SerializedName("categories_image")
    @Expose
    private String categoriesImage;
    @SerializedName("categories_icon")
    @Expose
    private String categoriesIcon;
    @SerializedName("parent_id")
    @Expose
    private int parentId;
    @SerializedName("sort_order")
    @Expose
    private int sortOrder;
    @SerializedName("isLiked")
    @Expose
    private String isLiked;
    @SerializedName("manufacturers_id")
    @Expose
    private int manufacturersId;
    @SerializedName("manufacturers_name")
    @Expose
    private String manufacturersName;
    @SerializedName("manufacturers_image")
    @Expose
    private String manufacturersImage;
    @SerializedName("manufacturers_url")
    @Expose
    private String manufacturersUrl;
    @SerializedName("date_added")
    @Expose
    private String dateAdded;
    @SerializedName("last_modified")
    @Expose
    private String lastModified;

    @SerializedName("isSale_product")
    @Expose
    private String isSaleProduct;


    @SerializedName("attributes_price")
    @Expose
    private String attributesPrice;
    @SerializedName("final_price")
    @Expose
    private String productsFinalPrice;
    @SerializedName("total_price")
    @Expose
    private String totalPrice = "";

    @SerializedName("customers_basket_quantity")
    @Expose
    private int customersBasketQuantity;

    @SerializedName("images")
    @Expose
    private List<Image> images = new ArrayList<Image>();

    @SerializedName("attributes")
    @Expose
    private List<Attribute> attributes = new ArrayList<Attribute>();

    @SerializedName("motorist_id")
    @Expose
    private long mMotoristId = 0;

    @SerializedName("motorist_name")
    @Expose
    private String mMotoristName = "";

    @SerializedName("qty_orders_min")
    @Expose
    private int mQuantityMin = 0;

    @SerializedName("qty_orders_max")
    @Expose
    private int mQuantityMax = 0;

    @SerializedName("id_jenis_products")
    @Expose
    private int mProductType = 0;

    @SerializedName("trans_limit")
    @Expose
    private int mQuantityPromoLimit = 0;

    @SerializedName("trans_live")
    @Expose
    private int mQuantityPromoLive = 0;

    @SerializedName("qty_promo_bought")
    @Expose
    private int mQuantityPromoBought = 0;


    @Override
    public String toString() {
        StringBuilder tempToString = new StringBuilder("\n--- ProductDetails ---\n");
        tempToString.append("productsId: ").append(productsId).append("\n");
        tempToString.append("productsName: ").append(productsName).append("\n");
        tempToString.append("categoriesId: ").append(categoriesId).append("\n");
        tempToString.append("categoriesName: ").append(categoriesName).append("\n");
        tempToString.append("productsQuantity: ").append(productsQuantity).append("\n");
        tempToString.append("productsDateAdded: ").append(productsDateAdded).append("\n");
        tempToString.append("totalPrice: ").append(totalPrice).append("\n");
        tempToString.append("minQuantity: ").append(mQuantityMin).append("\n");
        tempToString.append("maxQuantity: ").append(mQuantityMax).append("\n");
        tempToString.append("mProductType: ").append(mProductType).append("\n");
        tempToString.append("mQuantityPromoLimit: ").append(mQuantityPromoLimit).append("\n");
        tempToString.append("mQuantityPromoLive: ").append(mQuantityPromoLive).append("\n");
        tempToString.append("mQuantityPromoBought: ").append(mQuantityPromoBought).append("\n");
        return tempToString.toString();
    }


}

и я хочу преобразовать эту строку JSON в реальный JSON, например так:

{
    "type": "donut",
    "name": "Cake",
    "toppings": [
        { "id": "5002", "type": "Glazed" },
        { "id": "5006", "type": "Chocolate with Sprinkles" },
        { "id": "5004", "type": "Maple" }
    ]
}

, чтобы я мог прочитать и скопировать этот JSON и отправить его в виде JSON строки с моего устройства iOS на сервер, используя быстрый язык программирования. потому что мне нужно опубликовать эту JSON строку в теле запроса следующим образом:

enter image description here

Я получаю это JSON string от нашего разработчика Android. этот JSON string генерируется из библиотеки GSON в Android и конвертируется из Java Object в JSON строку таким образом. К сожалению, разработчик Android также не понимает, как преобразовать его в реальный JSON, а не JSON string.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...