jq命令返回null

时间:2019-04-28 19:51:45

标签: json sh jq

我的示例文件中包含以下json内容,但是在使用var imageData = Data() resourceManager.requestData(for: targetResource, options: nil, dataReceivedHandler: { (resourceData) in imageData.append(resourceData) }) { (inError) in if let error = inError { //handle error } else { let imageSource = CGImageSourceCreateWithData(imageData as CFData, nil) print("data: \(resourceData)") handler(self.getDataFromImageSource(imageSource: imageSource)) } } 命令时,结果始终为null:

jq

我想检索字节计数的值,即byteCount。结果应为480。

但是下面是我得到的输出:

{
    "listingRequest": {
        "id": "016a1050-82dc-1262-cc9b-4baf3e0b7123",
        "uri": "http://localhost:9090/nifi-api/flowfile-queues/016a104a-82dc-1262-7d78-d84a704abfbf/listing-requests/016a1050-82dc-1262-cc9b-4baf3e0b7123",
        "submissionTime": "04/28/2019 19:40:58.593 UTC",
        "lastUpdated": "19:40:58 UTC",
        "percentCompleted": 0,
        "finished": false,
        "maxResults": 100,
        "state": "Waiting for other queue requests to complete",
        "queueSize": {
            "byteCount": 480,
            "objectCount": 20
        },
        "sourceRunning": false,
        "destinationRunning": false
    }
}

我刚发现jq工具由于限制而无法安装在我们的服务器中。

如何通过sed / grep执行此操作?我尝试了cat queue.json | jq -r '.byteCount' null ,但没有得到任何输出

3 个答案:

答案 0 :(得分:3)

您需要指定完整路径:

P0 = list(P0)
T0 = list(T0)

答案 1 :(得分:0)

指定完整路径的另一种方法是使用..,例如

$ jq '.. | .byteCount? // empty' queue.json 
480

答案 2 :(得分:0)

或者,您可能已使用用于JSON的步行路径unix工具: jtc ,其中以常规方式实现索引和子脚本编制(如大多数编程语言一样) ):

bash $ <file.json jtc -w'[listingRequest][queueSize][byteCount]'
480

PS>披露:我是jtc工具的创建者