jQuery-使用jq将JSON转换为另一种JSON格式

时间:2019-10-09 16:15:01

标签: json jq

我正在使用jqplay播放格式。以某种方式从某种不同的格式,我能够到达以下格式。但是现在我想更改此格式,如下所示。基本上我想合并两个ID相同的对象。

“输入”

[
  {
    "id": "7972",
    "secondaryAddresses": {
      "1-2G8AXE": {
        "isDefaultBillingAddress": "true",
        "isDefaultShippingAddress": "true",
      }
    }
  }
]
[
  {
    "id": "7972",
    "secondaryAddresses": {
      "1-4BR2P6B": {
        "isDefaultBillingAddress": "false",
        "isDefaultShippingAddress": "false",
      }
    }
  }
]
[
  {
    "id": "6980",
    "secondaryAddresses": {
      "1-9BR289B": {
        "isDefaultBillingAddress": "false",
        "isDefaultShippingAddress": "false",
      }
    }
  }
]
[
  {
    "id": "6980",
    "secondaryAddresses": {
      "1-8B0989B": {
        "isDefaultBillingAddress": "false",
        "isDefaultShippingAddress": "false",
      }
    }
  }
]

输出

[
  {
    "id": "7972",
    "secondaryAddresses": {
      "1-2G8AXE": {
        "isDefaultBillingAddress": "true",
        "isDefaultShippingAddress": "true",
      },
       "1-4BR2P6B": {
        "isDefaultBillingAddress": "false",
        "isDefaultShippingAddress": "false",
      }
    }
  },
  {
    "id": "6980",
    "secondaryAddresses": {
      "1-9BR289B": {
        "isDefaultBillingAddress": "false",
        "isDefaultShippingAddress": "false",
      },
       "1-8B0989B": {
        "isDefaultBillingAddress": "false",
        "isDefaultShippingAddress": "false",
      }
    }
  }
]

请帮助我。我希望使用某些模板将一个json转换为另一种json格式。

2 个答案:

答案 0 :(得分:1)

这是一个有效的解决方案,尽管它以帮助程序功能为代价,但它也很简单。由于此功能是通用的,因此可能值得将其添加到此类功能的库中。

<TouchableOpacity>
      <Text style={{marginVertical: 20}} onPress={() => pickImage()}>Gallery</Text>
      <Text style={{marginVertical: 20}}>Camera</Text>
      <Text style={{marginVertical: 25}} onPress={() => editImage()}>Edit Image</Text>
    </TouchableOpacity>

以下使用def aggregate_by(s; f; g): reduce s as $x (null; .[$x|f] += [$x|g]); ,因此必须与jq的inputs命令行选项结合使用:

-n

答案 1 :(得分:0)

固定示例输入后,进行以下调用

< sample.json jq -n '
  [inputs[]]
  | group_by(.id)
  | map( reduce .[] as $x
           (.[0]|{id}; 
           .secondaryAddresses += ($x | .secondaryAddresses)))'

产生:

[
  {
    "id": "6980",
    "secondaryAddresses": {
      "1-9BR289B": {
        "isDefaultBillingAddress": "false",
        "isDefaultShippingAddress": "false"
      },
      "1-8B0989B": {
        "isDefaultBillingAddress": "false",
        "isDefaultShippingAddress": "false"
      }
    }
  },
  {
    "id": "7972",
    "secondaryAddresses": {
      "1-2G8AXE": {
        "isDefaultBillingAddress": "true",
        "isDefaultShippingAddress": "true"
      },
      "1-4BR2P6B": {
        "isDefaultBillingAddress": "false",
        "isDefaultShippingAddress": "false"
      }
    }
  }
]