我正在从数组创建一个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, variable=[trackingcode, v1, v2]}, {scopeDef=^https?://([^/:\?]*\.)?delta.com/products, scope=Products Section, variable=[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对象。
答案 0 :(得分:1)
首先,你不需要解析请求,你已经创建了一个对象,只有当你将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。这意味着:
等等。祝你好运!