将数组摇动一次,但即使该数组为空也要保留该数组

我为如何命名这个标题而苦苦挣扎。这来自twitter示例流。我需要将标签文本拖到顶层的数组中。我已经工作了,但是如果只有一个#标签,它会摇晃成一个字符串,如果没有#标签(在这种情况下,twitter会返回一个空数组),那么该字段就会消失。我想对URL字段和用户提及做同样的事情。

输入JSON:

{"entities": {
        "hashtags": [{"text": "somethingClever","indices": [22,28]},{"text": "somethingLessClever","indices": [30,40]}],"urls": [],"user_mentions": [{
            "screen_name": "username","indices": [3,19]
        }],"symbols": []
    }

所需的输出:

{
"hashtags": ["somethingClever"],"user_mentions": ["username"]
}

但是我得到的是: 实际输出,请注意screen_name不是数组,并且网址完全丢失。那是我问题的症结所在。

{
  "hashtag_text" : [ "somethingClever","somethingLessClever" ],"screen_name" : "username"
}

到目前为止,这是我的震动规格:

[
  {
    "operation": "shift","spec": {
      "entities": {
        "hashtags": { "*": { "text": ".hashtag_text" } },"urls": { "*": { "url_text": ".urls" } },"user_mentions": { "*": { "screen_name": ".&" } }
      }
    }
  }
]
gr364212028 回答:将数组摇动一次,但即使该数组为空也要保留该数组

我知道了。我使用shift将必要的数组元素提升到了一个新的层次(从实体到根)。接下来,我使用默认操作使它仍然是一个数组,即使该数组为空。最后,即使只有一个元素,我也使用基数运算使它成为一个数组。

希望这对某人有帮助。

[
  {
    "operation": "shift","spec": {
      "entities": {
        "hashtags": { "*": { "text": ".hashtags" } },"urls": { "*": { "url_text": ".urls" } },"user_mentions": { "*": { "screen_name": ".&" } }
      }
    }
  },{
    "operation": "default","spec": {
      "hashtags[]": {},"urls[]": {},"screen_name[]": {}
    }
  },{
    "operation": "cardinality","spec": {
      "hashtags": "MANY","urls": "MANY","screen_name": "MANY"
    }
  }
]


本文链接:https://www.f2er.com/3054660.html

大家都在问