2016-12-19 8 views
-1

2質問:JQのJSONの解析 - 配列をtoDateまでを使用して、日付にタイムスタンプを交換し、フラット

1)私はしかし、2016から12「のような人間が読めるの日付にタイムスタンプを変更されたとして、JSONを維持したいです-19T09:21:35Z」

{ 
    "Action": "ALLOW", 
    "Timestamp": 1482139256.274, 
    "Request": { 
    "Country": "US", 
    "URI": "/version/moot/beta.json", 
    "Headers": [ 
     { 
     "Name": "Host", 
     "Value": "static.tiza.com" 
     }, 
     { 
     "Name": "User-Agent", 
     "Value": "Faraday v0.9.2" 
     }, 
     { 
     "Name": "Accept-Encoding", 
     "Value": "gzip;q=1.0,deflate;q=0.6,identity;q=0.3" 
     }, 
     { 
     "Name": "Accept", 
     "Value": "*/*" 
     }, 
     { 
     "Name": "X-Newrelic-Id", 
     "Value": "Vgcs5gbFU123dFBWGwIdAVFdrXBwc=" 
     }, 
     { 
     "Name": "X-Newrelic-Transaction", 
     "Value": "PxQDQVlzZVUd3NKQcrEwWwU" 
     } 
    ], 
    "ClientIP": "107.22.17.51", 
    "Method": "GET", 
    "HTTPVersion": "HTTP/1.1" 
    }, 
    "Weight": 1 
} 

は、私が 'toDateまで' JQ機能を使用してそれを行うことができます知っているが、私は更新された他のすべてのデータ

sh# cat temp.json | jq -r '.SampledRequests[].Timestamp | todate' 
2016-12-19T09:21:44Z 

---------を失います - -------

2番目の質問: 2)「要求{}」レベルの下で配列から.Headers []の内容を取り出すにはどうすればよいですか?

{ 
    "TimeWindow": { 
    "EndTime": 1482156660, 
    "StartTime": 1482156420 
    }, 
    "SampledRequests": [ 
    { 
     "Action": "ALLOW", 
     "Timestamp": 1482139256.274, 
     "Request": { 
     "Country": "US", 
     "URI": "/version/moot/beta.json", 
     "Headers": [ 
      { 
      "Name": "Host", 
      "Value": "static.tiza.com" 
      }, 
      { 
      "Name": "X-Newrelic-Transaction", 
      "Value": "PxQDQVlzZVUd3NKQcrEwWwU" 
      } 
     ], 
     "ClientIP": "107.22.17.51", 
     "Method": "GET", 
     "HTTPVersion": "HTTP/1.1" 
     }, 
     "Weight": 1 
    } 
    ], 
    "PopulationSize": 89 
} 

へ:から

{ 
    "TimeWindow.EndTime": 1482156660, 
    "TimeWindow.StartTime": 1482156420, 
    "Action": "ALLOW", 
    "Timestamp": 1482139256.274, 
    "Request.Country": "US", 
    "Request.URI": "/version/moot/beta.json", 
    "Headers.Host": "static.tiza.com", 
    "Headers.X-Newrelic-Transaction": "PxQDQVlzZVUd3NKQcrEwWwU", 
    "ClientIP": "107.22.17.51", 
    "Method": "GET", 
    "HTTPVersion": "HTTP/1.1", 
    "Weight": 1, 
    "PopulationSize": 89 
} 

どうもありがとう、

モシェ

+0

だれでも、私はこれを使用しました: [leaf_paths as $ path | {"key":$ path |マップ(tostring)| join( "。")、 "value":getpath($ path)}] | from_entries –

答えて

0

1)を使用する| =だけではなく|

2)フラグメントを変換するための一つの方法:

{ 
    "Headers": [ 
    { 
     "Name": "Host", 
     "Value": "static.tiza.com" 
    }, 
    { 
     "Name": "User-Agent", 
     "Value": "Faraday v0.9.2" 
    } 
    ] 
} 

必要に応じてフィルタを使用することになります。あなたの場合

.Headers[] | { ("Headers." + .Name): .Value } 

、あなたはそのため(2)については、以下のフィルタを使用することができます:

.SampledRequests[].Request.Headers[] |= 
    { ("Headers." + .Name): .Value } 

私は

0 :-)一緒にすべてのピースを置くためにあなたにそれを残しておきます
+0

ありがとう@ピーク、私はまだ2番目の質問に苦しんでいます。 –

+0

まだ私が探しているものではありません。 –

+0

??????????????? –