क्या इस बारे में:
function setObj (str, value, obj) {
var ref = obj, keys = str.split('.');
while (keys.length) {
var currentKey = keys.shift();
ref[currentKey] = keys.length ? (ref[currentKey] ? ref[currentKey] : {}) : value;
ref = ref[currentKey];
}
}
का उपयोग कर
($ .serializeArray साथ निकाली गई किसी न किसी रूप मूल्यों हो सकता है) एक इनपुट वस्तु के साथ उदाहरण
var serializedInputs = [
{name: 'fruits[1][name]', value: 'Banana'},
{name: 'fruits[1][id]', value: '1'},
{name: 'fruits[2][name]', value: 'Strawberry'},
{name: 'fruits[2][id]', value: '2'},
{name: 'fruits[3][name]', value: 'Raspberry'},
{name: 'fruits[3][id]', value: '3'},
{name: 'fruits[4][name]', value: 'Kiwi'},
{name: 'fruits[4][id]', value: '4'},
{name: 'fruits[5][name]', value: 'Mango'},
{name: 'fruits[5][id]', value: '5'},
{name: 'selected_fruit_id', value: '1'},
]
// This variable holds the result
var obj = {}
serializedInputs.forEach(function(item) {
// Turning square brackets into dot notation
setObj(item.name.replace(/\]/g, '').replace(/\[/g, '.'), item.value, obj);
})
परिणाम
{
"fruits": {
"1": {
"name": "Banana",
"id": "1"
},
"2": {
"name": "Strawberry",
"id": "2"
},
"3": {
"name": "Raspberry",
"id": "3"
},
"4": {
"name": "Kiwi",
"id": "4"
},
"5": {
"name": "Mango",
"id": "5"
}
},
"selected_fruit_id": "1"
}
यदि सी एक स्ट्रिंग है तो आपको इसे किसी ऑब्जेक्ट में आज़माकर मैन्युअल रूप से पार्स करना होगा। मैं लगभग गारंटी दे सकता हूं कि यह करना आसान होगा जहां आप स्ट्रिंग सी बनाते हैं और आपको कोई मैन्युअल पार्सिंग नहीं करना चाहिए। कृपया अपने कोड का यह अनुभाग दिखाएं ताकि मैं – Undefined
की सहायता कर सकूं, क्या स्ट्रिंग 'dot.separated.string = value' होने की गारंटी है और मूल्य पर कौन से प्रतिबंध लगाए गए हैं? क्या यह उदाहरण के लिए एक JSON प्रकार है? –
स्ट्रिंग को dot.seperated होने की गारंटी है, और मूल्य पर कोई बाधा नहीं है। – Nemo