【问题标题】:jquery Updating key of a nested objectjquery 更新嵌套对象的键
【发布时间】:2016-03-15 15:46:43
【问题描述】:

我有一个 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|-|-|'

当他们再次编辑时,情况会有所不同。那么到底如何在 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));

【问题讨论】:

标签: javascript jquery arrays json object


【解决方案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

【讨论】:

  • 我在看到这个之前解决了它。但是 object.keys 是我的救命稻草!感谢您的确认...!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-19
  • 2016-02-20
  • 2021-12-15
  • 2021-11-29
  • 2015-06-25
  • 1970-01-01
相关资源
最近更新 更多