jquery更新嵌套对象的键

时间:2016-03-15 15:46:44

标签: javascript jquery arrays json object

我已经将一个json字符串变成了一个带有parseJSON的对象(其中#get_my_json_data是一个输入json的textarea)

var data = jQuery.parseJSON( $("#get_my_json_data").val() );
很酷,我现在有一个对象可以看到整个结构。

我需要做的是改变一个节点的KEY。但是......我不知道它是什么(所以不能只进行字符串化和搜索/替换)。我知道它的确切位置......

这是一个示例结构或textarea中的json。

{
"MasterData": {
    "|-|-|ID|-|-|": {
        "menu": {
            "Tabs": [
                {
                    "Name": "Home",
                    "TabText": "Home"
                },
.........

我需要找到第二项的KEY,在这个例子中,它是:' | - | - | ID | - | - |'

当他们再次编辑时,它会有所不同。那么我怎么能在MasterData之后更新节点密钥并写出整个东西?

我尝试了$ .each循环,但它只是一直在杀死整个阵列'

----更新---

我最终这样做了,效果很好!

    var data = jQuery.parseJSON( $("#get_my_json_data").val() );
    var keys = Object.keys( data.MasterData );
    data.MasterData[$(this).val()] = data.ConteMasterDatatData[keys[0]];
    delete data.MasterData[keys[0]]; 
    $("#get_my_json_data").val(JSON.stringify(data));

1 个答案:

答案 0 :(得分:1)

如果我理解你想要的东西,你想要替换解析对象中的属性名称。

试试这个:

//Get the keys
var innerkeys = Object.keys(myObject.MasterData);

//Create a property with the information from the first key
myObject["myNewKey"] = myObject.MasterData[innerkeys[0]];

//Delete old property
delete myObject.MasterData[innerkeys[0]];

如果将对象解析为json,它应该与您预期的那样(未经测试)

从以下方面获取的信息:

how-to-list-the-properties-of-a-javascript-object

how-do-i-remove-a-property-from-a-javascript-object