【发布时间】:2018-08-05 13:30:00
【问题描述】:
您好,我必须动态地向现有 JSON 数组添加一些新的内容数组。我有一个这样的 JSON:
{
"deal": {
"distributionWindows": [
{
"availableAt": "2016-10-08T23:00:00Z",
"availableUntil": "2016-10-09T23:00:00Z",
"constraints": [
{
"categoryIds": [
"1760gh81-5m83-4b16-a2c5-6ed511f35d9a",
"09f78fg9-2728-4nl1-a601-c5176744d534"
],
"enforcedAt": "2016-10-08T23:00:00Z",
"enforcedUntil": "2016-10-09T23:00:00Z",
"type": "forbidden"
}
],
"enabled": false,
"type": "prefeature"
},
{
"availableAt": "2016-10-09T23:00:00Z",
"availableUntil": "2016-12-12T21:44:23Z",
"constraints": [
{
"categoryIds": [
"1324kj81-5e89-4b16-a1u5-6uy511f35d9a",
"1234nhgt-2728-4ac1-a601-c5176744d534"
],
"enforcedAt": "2016-11-09T23:00:00Z",
"enforcedUntil": "2016-12-12T22:59:59Z",
"type": "forbidden"
}
],
"enabled": false,
"type": "featured"
}
],
"inviteOnly": true,
"wowDeal": true
}
}
对于这个 JSON,我必须为每个约束添加新内容,最后 JSON 应该如下所示:
{
"deal": {
"distributionWindows": [
{
"availableAt": "2016-10-08T23:00:00Z",
"availableUntil": "2016-10-09T23:00:00Z",
"constraints": [
{
"categoryIds": [
"1760gh81-5m83-4b16-a2c5-6ed511f35d9a",
"09f78fg9-2728-4nl1-a601-c5176744d534"
],
"enforcedAt": "2016-10-08T23:00:00Z",
"enforcedUntil": "2016-10-09T23:00:00Z",
"type": "forbidden"
},
{
"categoryIds": [
“9fiu8908-7d78-22e4-a228-7403453512e8"
],
"enforcedAt": "2016-10-08T23:00:00Z",
"enforcedUntil": "2016-10-09T23:00:00Z",
"type": "allowed"
}
],
"enabled": false,
"type": "prefeature"
},
{
"availableAt": "2016-10-09T23:00:00Z",
"availableUntil": "2016-12-12T21:44:23Z",
"constraints": [
{
"categoryIds": [
"1324kj81-5e89-4b16-a1u5-6uy511f35d9a",
"1234nhgt-2728-4ac1-a601-c5176744d534"
],
"enforcedAt": "2016-11-09T23:00:00Z",
"enforcedUntil": "2016-12-12T22:59:59Z",
"type": "forbidden"
},
{
"categoryIds": [
“9fiu8908-7d78-22e4-a228-7403453512e8"
],
"enforcedAt": "2016-10-08T23:00:00Z",
"enforcedUntil": "2016-10-09T23:00:00Z",
"type": "allowed"
}
],
"enabled": false,
"type": "featured"
}
],
"inviteOnly": true,
"wowDeal": true
}
}
如何使用 perl 做到这一点?如何动态循环并添加最后一个约束?我可以提取值,但我不确定如何将它循环到 JSON 数组并在中间添加内容。主要问题是它是动态的,有时它可能在现有 JSON 中有一个约束数组,有时它可能有 2 或 3 个。但我必须在每个分布窗口的末尾添加我的新约束。
【问题讨论】:
-
你能展示一下你为解决它所做的工作吗??
-
@AkhileshAwasthi 我的 $json_array = decode_json($json); foreach my $item($json_array) { print $item->{deal}->{distributionWindows}[0]{constraints}[0]{categoryIds}[0];打印“\n”;打印 $item->{deal}->{distributionWindows}[0]{constraints}[0]{categoryIds}[1];打印“\n”; print print $item->{deal}->{distributionWindows}[0]{constraints};我是这个 perl 的新手,不知道该怎么做?
标签: json perl loops multidimensional-array