我正在从数组创建一个 JSON 对象,并且希望根据数组中的值将数据动态推送到此 JSON 对象。请参阅我的代码以更好地理解我的问题...
for(i=0;i<duplicates.length; i++) {
var request = {
"name": duplicates[i].scope,
"id": 3,
"rules":[
{
"name": duplicates[i].scope + " " + "OP SDR Sync",
"tags": [
{
"tagId": 1,
"variables":[
{
"variable": duplicates[i].variable[j],
"matchType": "Regex",
"value": duplicates[i].scopeDef
}
],
"condition": false,
},
{
"tagId": 1,
"condition": false,
}
],
"ruleSetId": 3,
}
]
}
}
我从 duplicates
数组中获取对象属性,该数组可以包含以下元素:
[{scopeDef=.*,scope=Global,变量=[trackingcode, v1, v2]},{scopeDef=^https?://([^/:\?]*\.)? delta.com/products,范围=产品部分,变量=[v3]}]
正如您所看到的,一个对象包含可以有多个值的variable
元素。我需要动态地将所有这些值推送到 JSON 对象(这意味着数组中可能有超过 3 个值)。
例如,在推送 duplicates
数组中的所有值后,我的 JSON 对象应如下所示:
name=Products Section,
rules=
[
{
name=Products Section OP SDR Sync,
tags=[
{
variables=
[
{
matchType=Regex,
variable=v3,
value=^https?://([^/:\?]*\.)?delta.com/products
},
{
matchType=Regex,
variable=trackingcode,
value=.*
},
{
matchType=Regex,
variable=v1,
value=.*
},
{
matchType=Regex,
variable=v2,
value=.*
}
],
condition=false,
},
{
condition=false,
tagId=1
}
],
ruleSetId=3
}
]
}
我尝试了以下代码但没有成功:
for(var j in duplicates[i].variable) {
var append = JSON.parse(request);
append['variables'].push({
"variable":duplicates[i].variable[j],
"matchType": "Regex",
"value": duplicates[i].scopeDef
})
}
如果我需要提供其他信息,请告诉我,我刚刚开始使用 JSON 对象。
最佳答案
首先,你不需要解析请求,你已经创建了一个对象,只有当你得到 JSON 作为字符串时才解析,例如:
var json='{"a":"1", "b":"2"}';
var x = JSON.parse(json);
接下来,您可以将对象的任何属性包装在数组中。要正确使用它,您应该编写:
request.rules[0].tags[0].variables.push({
"variable":duplicates[i].variable[j],
"matchType": "Regex",
"value": duplicates[i].scopeDef
})
如果您想使用您的代码片段,则需要对请求进行一些更改:
var request = {
"name": duplicates[i].scope,
"id": 3,
"variables":[
{
"variable": duplicates[i].variable[j],
"matchType": "Regex",
"value": duplicates[i].scopeDef
}
],
"rules":[
{
"name": duplicates[i].scope + " " + "OP SDR Sync",
"tags": [
{
"tagId": 1,
"condition": false,
},
{
"tagId": 1,
"condition": false,
}
],
"ruleSetId": 3,
}
]
}
}
要理解 JSON,请记住基本规则:向后读取 JSON。这意味着:
- 属性(property)
- 对象.属性
- arrayOfObfects['id'].object.property
- mainObject.arrayOfObfects['id'].object.property
等等。祝你好运!
关于javascript - 动态添加数组元素到 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38096415/