How to simplify aws DynamoDB query JSON output from the command line?

前端 未结 5 575
暖寄归人
暖寄归人 2020-12-25 15:14

I\'m working with The AWS Command Line Interface for DynamoDB.

When we query an item, we get a very detailed JSON output. You get something like this (it has been bu

5条回答
  •  太阳男子
    2020-12-25 15:35

    Here is another approach. This may be a little brutal but it shows the basic idea.

    def unwanted:    ["B","BOOL","M","S","L","BS","SS"];
    def fixpath(p):  [ p[] | select( unwanted[[.]]==[] ) ];
    def fixnum(p;v):
        if   p[-2]=="NS" then [p[:-2]+p[-1:],(v|tonumber)]
        elif p[-1]=="N" then [p[:-1], (v|tonumber)]
        else [p,v] end;
    
    reduce (tostream|select(length==2)) as [$p,$v] (
        {}
      ; fixnum(fixpath($p);$v) as [$fp,$fv]      
      | setpath($fp;$fv)
    )
    

    Try it online!

    Sample Run (assuming filter in filter.jq and data in data.json)

    $ jq -M -f filter.jq data.json
    {
      "ConsumedCapacity": null,
      "Count": 1,
      "Items": [
        {
          "Id": "app1",
          "Oldtypes": {
            "typeBS": [
              "VGVybWluYXRvcgo=",
              "VGVybWluYXRvciAyOiBKdWRnbWVudCBEYXkK",
              "VGVybWluYXRvciAzOiBSaXNlIG9mIHRoZSBNYWNoaW5lcwo=",
              "VGVybWluYXRvciA0OiBTYWx2YXRpb24K",
              "VGVybWluYXRvciA1OiBHZW5lc2lzCg=="
            ],
            "typeNS": [
              0,
              1,
              2,
              3,
              4,
              5
            ],
            "typeSS": [
              "foo",
              "bar",
              "baz"
            ]
          },
          "Parameters": {
            "nfs": {
              "IP": "172.16.0.178",
              "activated": true,
              "defaultPath": "/mnt/ebs/",
              "key": "dGhpcyB0ZXh0IGlzIGJhc2U2NC1lbmNvZGVk"
            },
            "ws": {
              "number": 5,
              "values": [
                "12253456346346",
                "23452353463464",
                "23523453461232",
                "34645745675675",
                "46456745757575"
              ]
            }
          }
        }
      ],
      "ScannedCount": 1
    }
    

提交回复
热议问题