将新条目插入到最后一个JSON项目中

时间:2017-09-20 15:46:38

标签: javascript json node.js

我有一个看起来像这样的JSON结构

{ 
"messages":[ 
    { 
        text: 'Some text' 
    },
    {   
        text: 'Some text again' 
    },
    { 
        text: 'Some text again again' 
    } 
 ]
}

我想在最后一个text对象中插入一个新对象,以便结构现在看起来像这样

    "messages":[ 
    { 
        text: 'Some text' 
    },
    {   
        text: 'Some text again' 
    },
    { 
        text: 'Some text again again', 
        "quick_replies": [
            {
                "title":"Loved it!",
                "block_names": ["Block 1"]
            },
            {
                "title":"test",
                "block_names": ["Block 1"]
            }
        ]
    } 
]
}

我尝试使用message[0].text.text.text = quick_replies...但是我不认为解决方案会有效,因为,会丢失并导致错误。

如何将新数据插入JSON结构?

3 个答案:

答案 0 :(得分:2)

如果您想访问最后一条消息,请使用length - 1

myObj.messages[myObj.messages.length - 1].quick_replies = [
        {
            "title":"Loved it!",
            "block_names": ["Block 1"]
        },
        {
            "title":"test",
            "block_names": ["Block 1"]
        }
    ];

答案 1 :(得分:0)

考虑你的结构

{ 
  messages:[ 
    { 
        text: 'Some text', 
    },
    {   
        text: 'Some text again',
    },
    { 
        text: 'Some text again again', 
    }, 
  ],
}

编辑最后一项:

messages[messages.length - 1].quick_replies = ...

在这里,我们将获得数组的大小,即3,减去1并访问数组中的元素。

为什么我们减去1?因为数组从索引0开始而不是1

答案 2 :(得分:-3)

使用Push方法:

var js = { 
"messages":[ 
    { 
        text: 'Some text' 
    },
    {   
        text: 'Some text again' 
    },
    { 
        text: 'Some text again again' 
    } 
 ]
};

js.messages.push({ 
        text: 'Some text again again', 
        "quick_replies": [
            {
                "title":"Loved it!",
                "block_names": ["Block 1"]
            },
            {
                "title":"test",
                "block_names": ["Block 1"]
            }
        ]
    });