我的 JSON:
{
"Id" : 1124574,
"Name" : "3Test_pro_RTB (dec)20 06",
"StartDate" : "2024-12-09",
"CreateTime" : "2024-06-20T18:23:11Z",
"Type" : "CPM_BANNER_CAMPAIGN",
"Status" : "DRAFT",
"State" : "OFF",
"SourceId" : null,
"Funds" : {
"Mode" : "SHARED_ACCOUNT_FUNDS",
"SharedAccountFunds" : {
"Refund" : 0,
"Spend" : 0
}
},
"RepresentedBy" : {
"Manager" : null,
"Agency" : "Havas Digital"
},
"CpmBannerCampaign" : {
"BiddingStrategy" : {
"Search" : {
"BiddingStrategyType" : "SERVING_OFF"
},
"Network" : {
"BiddingStrategyType" : "CP_MAXIMUM_IMPRESSIONS",
"CpMaximumImpressions" : {
"StartDate" : "2024-12-09",
"EndDate" : "2024-12-15",
"AutoContinue" : "NO",
"AverageCpm" : 101000000,
"SpendLimit" : 3000000000
}
}
},
"Settings" : [ {
"Option" : "ADD_METRICA_TAG",
"Value" : "YES"
}, {
"Option" : "ADD_OPENSTAT_TAG",
"Value" : "NO"
}, {
"Option" : "ADD_TO_FAVORITES",
"Value" : "NO"
}, {
"Option" : "DAILY_BUDGET_ALLOWED",
"Value" : "YES"
}, {
"Option" : "ENABLE_AREA_OF_INTEREST_TARGETING",
"Value" : "NO"
}, {
"Option" : "ENABLE_SITE_MONITORING",
"Value" : "NO"
}, {
"Option" : "REQUIRE_SERVICING",
"Value" : "NO"
}, {
"Option" : "SHARED_ACCOUNT_ENABLED",
"Value" : "YES"
} ],
"VideoTarget" : "CLICKS",
"CounterIds" : null,
"FrequencyCap" : {
"Impressions" : 3,
"PeriodDays" : 30
}
}
}
在下一步行动之前我需要稍微修改一下。我想从这个 json 中获取所有内容,但在
CpmBannerCampaign.Settings
内部我需要过滤数组。在Settings
内部我们可以看到多个物体。对象包含两个属性:Option
和Value
。我应该抓取 Option
等于其中之一的物体:ADD_OPENSTAT_TAG, ADD_METRICA_TAG, ADD_TO_FAVORITES, ENABLE_AREA_OF_INTEREST_TARGETING, ENABLE_CURRENT_AREA_TARGETING, ENABLE_REGULAR_AREA_TARGETING, ENABLE_SITE_MONITORING, REQUIRE_SERVICING
。如果不等于,那么我应该从数组中删除这个对象。
所以对于我的 JSON
Settings
应该是这样的:
...//other part of JSON
"Settings": [
{
"Option": "ADD_METRICA_TAG",
"Value": "YES"
},
{
"Option": "ADD_OPENSTAT_TAG",
"Value": "NO"
},
{
"Option": "ADD_TO_FAVORITES",
"Value": "NO"
},
{
"Option": "ENABLE_AREA_OF_INTEREST_TARGETING",
"Value": "NO"
},
{
"Option": "ENABLE_SITE_MONITORING",
"Value": "NO"
},
{
"Option": "REQUIRE_SERVICING",
"Value": "NO"
}
],
...
是否可以使用 JOLT 进行这样的归档?
您可以在这些对象的叶节点的右侧添加
Option
前缀后形成一个管道分隔键,以便通过 @1,Option
进行过滤,例如
[
{
"operation": "shift",
"spec": {
"*": "&", //the elements other than "CpmBannerCampaign"
"CpmBannerCampaign": {
"*": "&1.&", //the elements other than "Settings"
"Settings": {
"*": {
"*": "&3.&2.@1,Option.&"
}
}
}
}
},
{
"operation": "shift",
"spec": {
"*": "&",
"CpmBannerCampaign": {
"*": "&1.&",
"Settings": {
"ADD_OPENSTAT_TAG|ADD_METRICA_TAG|ADD_TO_FAVORITES|ENABLE_AREA_OF_INTEREST_TARGETING|ENABLE_CURRENT_AREA_TARGETING|ENABLE_REGULAR_AREA_TARGETING|ENABLE_SITE_MONITORING|REQUIRE_SERVICING": {
"*": "&3.&2[#2].&"
}
}
}
}
}
]