【发布时间】:2017-12-30 08:05:46
【问题描述】:
我有以下代码来创建一个 JSON 来调用 Adobe Analytics API (method segment.save)
item <-
list(definition = list(
container = list (
type = "hits",
operator = "or",
rules=I(list(
list(value= "test1 test2",
operator = "contains_any",
element = "page")))
)
),
owner="test",
reportSuiteID="test",
description="API Generated Segment",
name="test segment"
)
一旦美化和自动拆箱,结果是:
> jsonlite::toJSON(item, pretty = T, auto_unbox= T)
{
"definition": {
"container": {
"type": "hits",
"operator": "or",
"rules": [
{
"value": "test1 test2",
"operator": "contains_any",
"element": "page"
}
]
}
},
"owner": "test",
"reportSuiteID": "test",
"description": "API Generated Segment",
"name": "test segment"
}
适合创建新的细分,但不太适合编辑它们
JSON 结构有效,因为我能够创建新段。但是,我想检查段是否已经存在(使用 f.i. 来自 randyzwitch RSiteCatalyst 包的 GetSegments() 函数并检查名称是否已经与创建的段一致)。如果段已经存在,我想将 id 传递给 API 调用,这是用于编辑现有段的方法。它应该看起来像:
> jsonlite::toJSON(item, pretty = T, auto_unbox= T)
{
"definition": {
...
},
"owner": "test",
"reportSuiteID": "test",
"description": "API Generated Segment",
"name": "test segment",
"id": "s1982XXXXXXXXX_XXXXX_XXXXX",
}
是否可以在第一段代码中提供的 list() 定义中创建 if alike 语句?我想找到一个不需要 if 语句来检查 segmentID 是否存在并根据它生成带 id 的调用或不带 id 的调用的解决方案。
【问题讨论】:
-
查看第87-97行here,最终输出将是一个更容易操作的数据框
-
@parth thx 的建议,但我相信这个函数更多的是用于将 json 格式保存为 data.frame。我没有看到创建 data.frame 和相应的 json 结构的附加值。但是,您的提示帮助我找到了可能的答案,这在我自己对我的问题的回答中进行了解释。
标签: json r list api adobe-analytics