代码之家  ›  专栏  ›  技术社区  ›  agustin Vraj Patel

R-为Adobe Analytics API调用创建JSON-有条件地定义对象

  •  0
  • agustin Vraj Patel  · 技术社区  · 7 年前

    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结构是有效的,因为我能够创建新的段。但是,我想检查段是否已经存在(使用RandySwitch中的f.I.GetSegments()函数) RSiteCatalyst

     > 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-like语句?我想找到一种解决方案,它不需要if语句来检查segmentID是否存在,并根据它生成一个带id的调用或一个不带id的调用。

    1 回复  |  直到 7 年前
        1
  •  1
  •   agustin Vraj Patel    7 年前

    一旦使用创建了“类似JSON的结构” list 功能:

     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"
          )
    

    item

    if (!is.na(segments$segmentID[i])) {
      item <- c(item, id=segments$segmentID[i])
    }