Search code examples
arraysjsonobjectjq

Map array of objects to object of key value pairs


I have the following JSON structure:

[
 {
   "key11": "value11",
   "key12": "value12",
   "key13": "value13",
   "key14": "value14"
 },
 {
   "key21": "value21",
   "key22": "value22",
   "key23": "value23",
   "key24": "value24"
 },
 {
   "key31": "value31",
   "key32": "value32",
   "key33": "value33",
   "key34": "value34"
 }
]

How do I convert it to the following structure:

{
  "value11": "value12",
  "value21": "value22", 
  "value31": "value32"
}

I have tried a few JQ operators, but nothing seems to work.


Solution

  • let data = [
        {
          "key11": "value11",
          "key12": "value12",
          "key13": "value13",
          "key14": "value14"
        },
        {
          "key21": "value21",
          "key22": "value22",
          "key23": "value23",
          "key24": "value24"
        },
        {
          "key31": "value31",
          "key32": "value32",
          "key33": "value33",
          "key34": "value34"
        }
       ];
       
       //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
       let result = data.reduce((acc,next) => {
            let [first_val,second_val] = Object.values(next);
            acc[first_val] = second_val;
            return acc;
       },{});
    
       console.log(JSON.stringify(result));