【问题标题】:How to get certain JSON values from curl response [duplicate]如何从 curl 响应中获取某些 JSON 值
【发布时间】:2019-12-03 06:55:23
【问题描述】:

我正在尝试执行以下请求负载 (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

我只想获取卡号列表单独打印作为输出。我怎样才能做到这一点?

【问题讨论】:

    标签: linux shell curl command-line-interface


    【解决方案1】:

    您必须使用 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 中还有其他几个示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-13
      • 2019-01-23
      • 2021-07-29
      相关资源
      最近更新 更多