【问题标题】:Parse Json with Unirest and Java and Selenium WebDriver使用 Unirest 和 Java 和 Selenium WebDriver 解析 Json
【发布时间】:2020-04-12 13:58:05
【问题描述】:

我正在测试一个本地 api。 使用下面的代码,我得到了一个响应。 我需要从"returnMessage""returnCode""merchantOrderId" 获取数据,我已经尝试了很多方法,但都不能,请有人帮我吗?

API 测试代码:

@Test 
        public void Cod04Autorized() {


            HttpResponse<String> response = Unirest.post("http://localhost:8080/api/cielo/pagamentos/transacaoCompleta")
              .header("Content-Type", "application/json")
              .body("{\r\n\t\"merchantOrderId\": \"11234099\",\r\n\t\"client\": {\r\n\t\t\"name\": \"Joao das Neves Teste No Cap\"\r\n\t},\r\n\t\"payment\": {\r\n\t\t\"amount\": 10000,\r\n\t\t\"installments\": 1,\r\n\t\t\"capture\": false,\r\n\t\t\"card\": {\r\n\t\t\t\t\"cardNumber\": \"0000.0000.0000.0001\",\r\n\t\t\t\t\"holderName\": \"Joao das Neves\",\r\n\t\t\t\t\"expirationDate\": \"12/2030\",\r\n\t\t\t\t\"securityCode\": \"123\",\r\n\t\t\t\t\"brand\" : \"Visa\"\r\n\t\t}\r\n\t}\r\n}")
              .asString();


            Assert.assertEquals(200, response.getStatus());                 


            }

JSON 响应:

{
   "error":null,
   "content":{
      "merchantOrderId":"11234099",
      "customer":{
         "name":"Joao das Neves Teste No Cap",
         "email":null,
         "birthDate":null,
         "identity":null,
         "identityType":null,
         "address":null,
         "deliveryAddress":null
      },
      "payment":{
         "serviceTaxAmount":0,
         "installments":1,
         "interest":"0",
         "capture":false,
         "authenticate":false,
         "recurrent":false,
         "recurrentPayment":null,
         "creditCard":{
            "cardNumber":"0000.0*********0001",
            "holder":"Joao das Neves",
            "expirationDate":"12/2030",
            "securityCode":null,
            "saveCard":false,
            "brand":"Visa",
            "cardToken":null
         },
         "debitCard":null,
         "tid":"1219040857754",
         "proofOfSale":"857754",
         "authorizationCode":"634929",
         "softDescriptor":"123456789ABCD",
         "returnUrl":null,
         "provider":"Simulado",
         "paymentId":"7d263fbc-01cf-4fa8-a81d-130bfd1190a8",
         "type":"CreditCard",
         "amount":10000,
         "receivedDate":"2019-12-19 16:08:56",
         "capturedAmount":null,
         "capturedDate":null,
         "currency":"BRL",
         "country":"BRA",
         "returnCode":"4",
         "returnMessage":"Operation Successful",
         "status":1,
         "links":[
            {
               "Method":"GET",
               "Rel":"self",
               "Href":"https://apiquerysandbox.cieloecommerce.cielo.com.br/1/sales/7d263fbc-01cf-4fa8-a81d-130bfd1190a8"
            },
            {
               "Method":"PUT",
               "Rel":"capture",
               "Href":"https://apisandbox.cieloecommerce.cielo.com.br/1/sales/7d263fbc-01cf-4fa8-a81d-130bfd1190a8/capture"
            },
            {
               "Method":"PUT",
               "Rel":"void",
               "Href":"https://apisandbox.cieloecommerce.cielo.com.br/1/sales/7d263fbc-01cf-4fa8-a81d-130bfd1190a8/void"
            }
         ],
         "extraDataCollection":null,
         "expirationDate":null,
         "url":null,
         "number":null,
         "barCodeNumber":null,
         "digitableLine":null,
         "address":null,
         "boletoNumber":null,
         "demonstrative":null,
         "identification":null,
         "instructions":null,
         "authenticationUrl":null
      }
   }
}

【问题讨论】:

    标签: java json parsing unirest


    【解决方案1】:

    如果你只想获取returnMessagereturnCodemerchantOrderId这三个字段,使用Jayway JsonPath可以轻松完成。

    Maven 依赖项

    <dependency>
        <groupId>com.jayway.jsonpath</groupId>
        <artifactId>json-path</artifactId>
        <version>2.4.0</version>
    </dependency>
    

    代码 sn-p

    DocumentContext jsonContext = JsonPath.parse(jsonResponse);
    String returnMessage = jsonContext.read("$.content.payment.returnMessage");
    String returnCode = jsonContext.read("$.content.payment.returnCode");
    String merchantOrderId = jsonContext.read("$.content.merchantOrderId");
    

    【讨论】:

      猜你喜欢
      • 2012-03-15
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多