TimoC
TimoC

Reputation: 737

JQ: Merging different objects into a new array

I use jq 1.5 in a Windows enviroment to modify json files. Hi have following json file:

{"player_container":{"74016":["None","None","None","None","None","None","None","None"],"74002":["None","None","None","ta81a928e0624295b01499d7035d0308","tdd4e222600d42f9954b0be0448da0b1","None","None","None"],"74007":["None","None","None","None","None","None","None","None"],"74009":["None","None","None","None","None","None","kcb810a423dd4e179027f0feaae9ea60","None"],"74012":["x720ed571876471fab173ba05f71e4b3","None","None","None","None","None","None","None"],"74013":["None","None","None","None","None","None","None","None"],"74014":["vd86094b5a6e448f8c416d6fe75bec7c","None","None","h6ef696cf767464f9c367150fdb29fe4","None","g77b124cd46b41399c3db219ac0a76bd","None","None"],"74015":["None","None","None","None","None","None","None","None"]}}

In the object player_container are different objects (the "name" of the object and the number objects differs from time to time). I use following jq command actually to join them into a new array:

.player_container | .[] | [{ user_id: .[]}]

But it generates different json Arrays and not one. What i need looks like:

   [
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  }
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "ta81a928e0624295b01499d7035d0308"
  },
  {
    "user_id": "tdd4e222600d42f9954b0be0448da0b1"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  }
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  }
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "kcb810a423dd4e179027f0feaae9ea60"
  },
  {
    "user_id": "None"
  }
  {
    "user_id": "x720ed571876471fab173ba05f71e4b3"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  }
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  }
  {
    "user_id": "vd86094b5a6e448f8c416d6fe75bec7c"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "h6ef696cf767464f9c367150fdb29fe4"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "g77b124cd46b41399c3db219ac0a76bd"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  }
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  }
]

Any tips?

BR Timo

Upvotes: 1

Views: 515

Answers (1)

Michał Politowski
Michał Politowski

Reputation: 4385

You only have to move one character:

[.player_container | .[] | { user_id: .[]}]

While your version creates a separate array for each output of .player_container | .[], this will collect everything into one array.

Upvotes: 1

Related Questions