मैं किसी ऑब्जेक्ट को डेटा बनाने के लिए कनवर्ट करना चाहता हूं। मुझे तब तक कोई समस्या नहीं थी जब तक कि मुझे इसमें कोई वस्तु नहीं जोड़नी पड़े।

मैं अपने फॉर्म डेटा में एक जेसन ऑब्जेक्ट कैसे जोड़ सकता हूं?

यहां वह ऑब्जेक्ट है जिसे मैं फॉर्मडेटा में कनवर्ट करना चाहता हूं, इसे बिल्कुल वही प्रारूप रखना चाहिए।

{
"product": { 
    "name": "Produit Comp 2",
    "abbreviation": "prod_comp_2",
    "quantity": 4,
    "weight": 100,
    "tva": 21,
    "size": 10,
    "height": 24,
    "width": 23,
    "category_id": 91,
    "sub_category_id": 88,
    "status": 1,
    "price_unit": {
        "price_day_1": 73.43,
        "price_day_2": 74.43,
        "price_day_3": 75.43
    },
    "price_loaded": {
        "price_day_1": 75.43,
        "price_day_2": 76.43,
        "price_day_3": 77.43
    },
    "price_installation": {
        "price_day_1": 78.43,
        "price_day_2": 79.43,
        "price_day_3": 70.43
    },
    "price_built_delivered": {
        "price_day_1": 71.43,
        "price_day_2": 72.43,
        "price_day_3": 73.43
    }
}}

कनवर्ट करने के लिए यह मेरा वास्तविक कार्य है। मेरे फॉर्मडाटा में केवल price_unit, price_loaded, price_installation, price_built_delivered ऑब्जेक्ट गुम है। मैं उन्हें कैसे जोड़ सकता हूं?

    private toProductDto(product: Product): FormData {
    console.log('service', product);
    let formData = new FormData();
    if (product.id) { formData.append('id', '' + product.id); }
    if (product.name) { formData.append('name', product.name); }
    if (product.category) { formData.append('category_id', '' + product.category.id); }

    // Set subcategory to null if it's not defined on sending
    if (product.sub_category) {
        formData.append('sub_category_id', '' + product.sub_category.id);
    } else {
        formData.append('sub_category_id', null);
    }

    formData.append('status', '' + product.status);
    if (product.image) { formData.append('image', product.image, product.image.name); }
    if (product.description) { formData.append('description', '' + product.description); }
    if (product.quantity) { formData.append('amount', '' + product.quantity); }
    if (product.weight) { formData.append('weight', '' + product.weight); }
    if (product.length) { formData.append('length', '' + product.length); }
    if (product.width) { formData.append('width', '' + product.width); }
    if (product.height) { formData.append('height', '' + product.height); }
    if (product.tva) { formData.append('tva', '' + product.tva); }
    if (product.options) { formData.append('options', '' + product.options); }
    if (product.numbers_players) { formData.append('numbers_players', '' + product.numbers_players); }
   return formData;
}

आपकी सहायता के लिये पहले से ही धन्यवाद।

0
Stev0x 13 मार्च 2020, 17:24

2 जवाब

यहां वह ऑब्जेक्ट है जिसे मैं फॉर्मडेटा में कनवर्ट करना चाहता हूं, इसे बिल्कुल वही प्रारूप रखना चाहिए।

यह प्रति से असंभव है। FormData key=value जोड़ियों का एक फ्लैट सेट व्यक्त करता है।

आपको किसी प्रकार का क्रमांकन करने की आवश्यकता होगी।

जैसे JSON.stringify या PHP शैली के कुंजी नामों के साथ [] उनमें।

फिर आपको सर्वर साइड कोड में क्रमबद्ध संरचना को डीकोड करना होगा।

0
Quentin 13 मार्च 2020, 17:27
आपकी त्वरित प्रतिक्रिया के लिए बहुत-बहुत धन्यवाद, क्वेंटिन! :)
 – 
Stev0x
13 मार्च 2020, 17:33

मुझे अंत में एक समाधान मिला, यहाँ यह है:

    private toProductDto(product: Product): FormData {
    console.log('service', product);
    const formData = new FormData();
    if (product.id) { formData.append('[product][id]', '' + product.id); }
    if (product.name) { formData.append('[product][name]', product.name); }
    if (product.name) { formData.append('[product][abbreviation]', product.abbreviation); }
    if (product.category) { formData.append('[product][category_id]', '' + product.category.id); }

    // Set subcategory to null if it's not defined on sending
    if (product.sub_category) {
        formData.append('[product][sub_category_id]', '' + product.sub_category.id);
    } else {
        formData.append('[product][sub_category_id]', null);
    }

    formData.append('[product][status]', '' + product.status);
    if (product.image) { formData.append('[product][image]', product.image, product.image.name); }
    if (product.description) { formData.append('[product][description]', '' + product.description); }
    if (product.quantity) { formData.append('[product][quantity]', '' + product.quantity); }
    if (product.weight) { formData.append('[product][weight]', '' + product.weight); }
    if (product.length) { formData.append('[product][length]', '' + product.length); }
    if (product.width) { formData.append('[product][width]', '' + product.width); }
    if (product.height) { formData.append('[product][height]', '' + product.height); }
    if (product.tva) { formData.append('[product][tva]', '' + product.tva); }
    if (product.options) { formData.append('[product][options]', '' + product.options); }
    if (product.numbers_players) { formData.append('[product][numbers_players]', '' + product.numbers_players); }


    if (product.price_unit) { formData.append('[product][price_unit][price_day_1]', '' + product.price_unit.price_day_1); }
    if (product.price_unit) { formData.append('[product][price_unit][price_day_2]', '' + product.price_unit.price_day_2); }
    if (product.price_unit) { formData.append('[product][price_unit][price_day_3]', '' + product.price_unit.price_day_3); }

    if (product.price_loaded) { formData.append('[product][price_loaded][price_day_1]', '' + product.price_loaded.price_day_1); }
    if (product.price_loaded) { formData.append('[product][price_loaded][price_day_2]', '' + product.price_loaded.price_day_2); }
    if (product.price_loaded) { formData.append('[product][price_loaded][price_day_3]', '' + product.price_loaded.price_day_3); }

    if (product.price_installation) { formData.append('[product][price_installation][price_day_1]', '' + product.price_installation.price_day_1); }
    if (product.price_installation) { formData.append('[product][price_installation][price_day_2]', '' + product.price_installation.price_day_2); }
    if (product.price_installation) { formData.append('[product][price_installation][price_day_3]', '' + product.price_installation.price_day_3); }

    if (product.price_built_delivered) { formData.append('[product][price_built_delivered][price_day_1]', '' + product.price_built_delivered.price_day_1); }
    if (product.price_built_delivered) { formData.append('[product][price_built_delivered][price_day_2]', '' + product.price_built_delivered.price_day_2); }
    if (product.price_built_delivered) { formData.append('[product][price_built_delivered][price_day_3]', '' + product.price_built_delivered.price_day_3); }

    console.log(formData);
    return formData;
}
0
Stev0x 16 मार्च 2020, 13:55