在JQ map中使用Integer键值

时间:2019-11-12 22:17:54

标签: json jq

我正在尝试转换JSON

  "ideas": [
    {
      "id": 3,
      "ideaID": 499,
      "ideaName": "Apples & Bananas",
      "preference_order": 1,
      "_links": {
        "self": {
          "href": "/ideaProfile/api/v3/idea/3"
        }
      }
    },
    {
      "id": 5,
      "ideaID": 500,
      "ideaName": "Oranges and Peach",
      "preference_order": 1,
      "_links": {
        "self": {
          "href": "/ideaProfile/api/v3/idea/3"
        }
      }
    }
  ]
}

更改为地图格式。

{ <id1> : < ideaID1>, <id2> : < ideaID2> }

当我尝试使用此JQ时,它可用于String feilds,但以Numberic Feild作为键,则无法使用。

.ideas | (map( { (. preference_order) : .ideaName } ) | add ) 

我得到的错误- jq:错误(at:25):无法将数字(1)用作对象键

摘要-https://jqplay.org/s/-6c0QitFA7

这是将字符串值作为键的查询... .ideas | (map({(.ideaName):.ideaName})| add)

1 个答案:

答案 0 :(得分:2)

键必须是字符串,因此必须转换要用作键的数字值,可以使用tostring进行转换,如下所示:

.ideas[]
| { (.id | tostring): .ideaID }