2012-04-21 4 views
0

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

selObj = { 

    category: selectedCategory, // 1 category only 

    catOptions:{ 
     optionValue:discountValue, // we can 1 or have many of paired keys in this sub object 
     optionValue:discountValue, 
     optionValue:discountValue 
    }, 

    tariff:{ 
     tariffValue:discountValue, // we can 1 or have many of paired keys in this sub object 
     tariffValue:discountValue 
    }, 

    tarOptions:{ 
     tarOption:discountValue // we can 1 or have many of paired keys in this sub object 

    } 

}; 

Теперь у меня есть функция, которая будет заполнять пустой объект, который я заявить в начале моего сценария, как так ...

$(document).ready(function() { 
     var selObj = {}; 
     populateMyEmptyObject(selObj) 

}); 

populateMyEmptyObject(emptyObject){ 

     emptyObject.category = "Category" 

     // in my original function I have loops that produce strings with the following structure {"value1":"10","value2":"20","value3":"30","value4":"40"}, for this example I’ll call them loopReturn1, loopReturn2, loopReturn3, loopReturn4 

     // loops have happened and vars are produced... I've removed my loops as they're working just fine, I've omitted that code for simplicity 

     emptyObject.catOptions = loopReturn1; 
     emptyObject.tariff = loopReturn2; 
     emptyObject.tarOptions = loopReturn3; 
} 

Теперь с этим я постоянно получаю ошибки с пробельными проблемами и так далее. Мне сказали, что я должен использовать JSON.stringify, который у меня есть, но у меня все еще возникают проблемы. Теперь, забыв циклы, как я должен взять созданную строку и добавить ее к моему объекту, может кто-то сказать мне, что лучше всего взять строки и преобразовать/разбить их на мой исходный объект, называемый selObj. Также мне нужно вернуть emptyObject в моей функции, чтобы обновить selObj (как return emptyObject;)

Должен ли я изменить свой первоначальный пустой объект, так что лучше представляет мою желательную структуру, например, так:

var selObj = { 

    "category": "selectedCategory", 

    "catOptions":{ 
       }, 

    "tariff":{ 
       }, 

    "tarOptions":{ 
    } 

}; 

Любые советы я был бы признателен, я думаю, что это явно очевидно, что я разработчик, занимающийся самообразованием, и у меня есть несколько вредных привычек и ям!

+0

Являются ли эти «умные кавычки» вокруг 'category' ошибка копирования/вставки, или это выглядит, что в источнике, а? – Jon

+0

Только скопируйте и вставьте ошибку ... Я отредактирую, хорошее место BTW –

+0

«ошибки с пробелами» ... это не имеет большого смысла. Вы должны указать ** точно **, как выглядит ваш построенный JSON, иначе никто не поймет, о чем вы говорите. – Pointy

ответ

0

Example

$(document).ready(function() { 
    var o = getCategoryData(), 
     sJSON = JSON.stringify(o); 

    console.log(o, sJSON); 
}); 

var getCategoryData = function(o) { 

    // example functions start 
    var getCategory = function() { 
     return "Category"; 
    }, 
    getCatOptions = function() { 
     return {value1: 10, value2: 20, value3: 30, value4: 40}; 
    }, 
    getTariff = function() { 
     return {value1: 10, value2: 20, value3: 30, value4: 40}; 
    }, 
    getTarOptions = function() { 
     return {value1: 10, value2: 20, value3: 30, value4: 40}; 
    }; 
    // example functions end 

    if (!o) o = {}; 
    o.category = getCategory(); 
    o.catOptions = getCatOptions(); 
    o.tariff = getTariff(); 
    o.tarOptions = getTarOptions(); 
    return o; 
}​ 
Смежные вопросы