如何在 parent 的声明中设置一个 JSON object 等于另一个 JSON object
how to set a JSON object equal to another JSON object within the parent's declaration
我是 javascript 和 json 的新手,正在处理一些代码。
这是我的格式 JSON object
messageData = {
"attachment": {
"type": "template",
"payload": {
"template_type": "generic",
elements: [{
title: "titleOne",
subtitle: "subtitleOne"
}, {
title: "titleTwo",
subtitle: "subtitleTwo"
}]
}
}
}
我不想将每个标题和副标题 object 单独添加到元素中,而是想通过循环来做到这一点,只需将一个 object 设置为一个包含更多数量的数组标题和副标题 objects。所以假设我有 object 个标题:
titles = {} //100 objects with different titles and subtitles.
有没有办法实现如下所示的逻辑?
messageData = {
"attachment": {
"type": "template",
"payload": {
"template_type": "generic",
elements = titles
}
}
}
是否正确格式化了所有内容?感谢您的帮助!
您有一个变量 titles
,它有一个 array of objects 分配给它。类似于:
var titles = [{...}, {...}, ...];
您稍后想要将此数组(当前分配给变量 titles
)分配给 object属性(在本例中为 elements
):
var messageData = {
attachment: {
type: "template",
payload: {
template_type: "generic",
elements // <-- here
}
}
}
(请注意,我从 属性 名称中删除了双引号 ,它们不是必需的,因为它们具有有效的符号)
如您所料,没有比这更容易的了:
var messageData = {
attachment: {
type: "template",
payload: {
template_type: "generic",
elements: titles
}
}
}
这足以作为一个答案,但现在让我们退后一步:在 javascript 中几乎所有东西都是一个 object(我正在简化一个这里有点,例如字符串不是对象,但我邀请你自己去了解更多)。但是,是的,一开始听起来令人困惑,array 是一个 object.
另一件需要知道的事情是,在 javascript 中,对象是通过引用分配的。这意味着如果您修改原始 titles
数组,elements
数组也会被修改。它们只是指向同一个对象的两个名称。
在你的具体情况下,这个细节可能无关紧要,但如果你想分开 titles
和 elements
的生活,你需要 克隆 原始数组,然后再次分配它。最快的方法是通过 JSON 转换:
var titles_0 = JSON.parse(JSON.stringify(titles));
var messageData = {
attachment: {
type: "template",
payload: {
template_type: "generic",
elements: titles_0
}
}
}
我是 javascript 和 json 的新手,正在处理一些代码。
这是我的格式 JSON object
messageData = {
"attachment": {
"type": "template",
"payload": {
"template_type": "generic",
elements: [{
title: "titleOne",
subtitle: "subtitleOne"
}, {
title: "titleTwo",
subtitle: "subtitleTwo"
}]
}
}
}
我不想将每个标题和副标题 object 单独添加到元素中,而是想通过循环来做到这一点,只需将一个 object 设置为一个包含更多数量的数组标题和副标题 objects。所以假设我有 object 个标题:
titles = {} //100 objects with different titles and subtitles.
有没有办法实现如下所示的逻辑?
messageData = {
"attachment": {
"type": "template",
"payload": {
"template_type": "generic",
elements = titles
}
}
}
是否正确格式化了所有内容?感谢您的帮助!
您有一个变量 titles
,它有一个 array of objects 分配给它。类似于:
var titles = [{...}, {...}, ...];
您稍后想要将此数组(当前分配给变量 titles
)分配给 object属性(在本例中为 elements
):
var messageData = {
attachment: {
type: "template",
payload: {
template_type: "generic",
elements // <-- here
}
}
}
(请注意,我从 属性 名称中删除了双引号 ,它们不是必需的,因为它们具有有效的符号)
如您所料,没有比这更容易的了:
var messageData = {
attachment: {
type: "template",
payload: {
template_type: "generic",
elements: titles
}
}
}
这足以作为一个答案,但现在让我们退后一步:在 javascript 中几乎所有东西都是一个 object(我正在简化一个这里有点,例如字符串不是对象,但我邀请你自己去了解更多)。但是,是的,一开始听起来令人困惑,array 是一个 object.
另一件需要知道的事情是,在 javascript 中,对象是通过引用分配的。这意味着如果您修改原始 titles
数组,elements
数组也会被修改。它们只是指向同一个对象的两个名称。
在你的具体情况下,这个细节可能无关紧要,但如果你想分开 titles
和 elements
的生活,你需要 克隆 原始数组,然后再次分配它。最快的方法是通过 JSON 转换:
var titles_0 = JSON.parse(JSON.stringify(titles));
var messageData = {
attachment: {
type: "template",
payload: {
template_type: "generic",
elements: titles_0
}
}
}