如何从curl响应中获取某些JSON值

时间:2019-07-25 04:42:33

标签: linux shell curl command-line-interface

我正在尝试执行以下请求有效负载(JSON),并返回响应,如下所示:

CURL命令:

curl --header "Content-Type: application/json" --header "hostname:kindle.qa.amazon.com" \
--request POST \
--data '{
"country":"BE",
"cardNumberPayment":"9423-8234-1882-3412",
"cardType" : "Visa",
"expirationMonth": "12",
"expirationYear": "2020"
}' \
  http://amazon.qa.payment.com/v1/Services/restservices/credit

响应

{"cardType":"Visa","cardNumber":"9423823418823409","cvv":"***"}
{"cardType":"Visa","cardNumber":"9423823418823411","cvv":"***"}
{"cardType":"Visa","cardNumber":"9423823418823410","cvv":"***"}

我只想获取curl命令的cardNumber,而不是打印整个JSON(cardType和cvv除外)。

预期产量

9423823418823409
9423823418823411
9423823418823410

我只想获取一张卡号列表即可打印为输出。我该如何实现?

1 个答案:

答案 0 :(得分:0)

您将必须使用JSON解析器来提取信息。您可以使用jq来做到这一点(jq是轻量级的命令行JSON处理器。)

article详细介绍了如何实现。他们也有一个tutorial here

例如

curl 'http://amazon.qa.payment.com/v1/Services/restservices/credit' | jq '.[0]'

将提取数组的第一个元素(假设它是一个数组-您的代码使它看起来像一系列对象)。

然后按以下方式获取卡号

jq '.[0] | .cardNumber'

SO post too中还有其他几个示例。