jquery 更新嵌套对象的键

jquery Updating key of a nested object

本文关键字:对象 嵌套 更新 jquery      更新时间:2023-09-26

我有一个json字符串,我已经用parseJSON变成了一个对象(其中#get_my_json_data是输入json的文本区域)

var data = jQuery.parseJSON( $("#get_my_json_data").val() );

很酷,我现在有一个对象可以看到整个结构。

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

下面是文本区域中的示例结构或 json。

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

我需要找到第二项的 KEY,在本例中,它是:"|-|-|ID|-|-|"

当他们再次编辑时,情况会有所不同。那么我到底如何在主数据之后更新节点密钥并编写整个内容?

我尝试了一个 $.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));
因此

,如果我了解您想要什么,您希望替换解析对象中的属性名称。

试试这个:

//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,则它应该符合预期(未测试)

从以下位置获得的信息:

如何列出 JavaScript 对象的属性

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