如何使用 JSONata 更改 JSON 响应
How to use JSONata to change JSON response
我正在使用 API returns 以下 JSON:
{
"rows": [
{
"keys": [
"search term 1",
"https://example.com/article-about-keyword-1/"
],
"clicks": 24,
"impressions": 54,
"ctr": 0.4444444444444444,
"position": 2.037037037037037
},
{
"keys": [
"search term 2",
"https://example.com/article-about-keyword-2/"
],
"clicks": 17,
"impressions": 107,
"ctr": 0.1588785046728972,
"position": 2.663551401869159
}
],
"responseAggregationType": "byPage"
}
我正在尝试使用 JSONata 将其更改为更像这样的内容:
{
"rows": [
{
"keyword": search term 1,
"URL": https://example.com/article-about-keyword-1/,
"clicks": 24,
"impressions": 54,
"ctr": 0.4444444444444444,
"position": 2.037037037037037
},
{
"keyword": search term 2,
"URL": https://example.com/article-about-keyword-2/,
"clicks": 17,
"impressions": 107,
"ctr": 0.1588785046728972,
"position": 2.663551401869159
}
],
"responseAggregationType": "byPage"
}
基本上,我正在尝试将 'keys' 部分分解为 'Keyword' 和 'URL'。
我已经在 https://try.jsonata.org/ 玩了一段时间了,但我并没有走多远。任何帮助表示赞赏。
拆分键数组应该可以通过按索引访问每个元素来实现(假设关键字和 URL 保证出现在同一索引上)。
这是从源文件转换为所需目标形状的完整 JSONata 表达式:
{
"rows": rows.{
"keyword": keys[0],
"URL": keys[1],
"clicks": clicks,
"impressions": impressions,
"ctr": ctr,
"position": position
}[],
"responseAggregationType": responseAggregationType
}
顺便说一下,我使用我的团队在 Stedi 构建的 Mappings tool 在 2 分钟内构建了这个解决方案。
我正在使用 API returns 以下 JSON:
{
"rows": [
{
"keys": [
"search term 1",
"https://example.com/article-about-keyword-1/"
],
"clicks": 24,
"impressions": 54,
"ctr": 0.4444444444444444,
"position": 2.037037037037037
},
{
"keys": [
"search term 2",
"https://example.com/article-about-keyword-2/"
],
"clicks": 17,
"impressions": 107,
"ctr": 0.1588785046728972,
"position": 2.663551401869159
}
],
"responseAggregationType": "byPage"
}
我正在尝试使用 JSONata 将其更改为更像这样的内容:
{
"rows": [
{
"keyword": search term 1,
"URL": https://example.com/article-about-keyword-1/,
"clicks": 24,
"impressions": 54,
"ctr": 0.4444444444444444,
"position": 2.037037037037037
},
{
"keyword": search term 2,
"URL": https://example.com/article-about-keyword-2/,
"clicks": 17,
"impressions": 107,
"ctr": 0.1588785046728972,
"position": 2.663551401869159
}
],
"responseAggregationType": "byPage"
}
基本上,我正在尝试将 'keys' 部分分解为 'Keyword' 和 'URL'。
我已经在 https://try.jsonata.org/ 玩了一段时间了,但我并没有走多远。任何帮助表示赞赏。
拆分键数组应该可以通过按索引访问每个元素来实现(假设关键字和 URL 保证出现在同一索引上)。
这是从源文件转换为所需目标形状的完整 JSONata 表达式:
{
"rows": rows.{
"keyword": keys[0],
"URL": keys[1],
"clicks": clicks,
"impressions": impressions,
"ctr": ctr,
"position": position
}[],
"responseAggregationType": responseAggregationType
}
顺便说一下,我使用我的团队在 Stedi 构建的 Mappings tool 在 2 分钟内构建了这个解决方案。