【问题标题】:Get values from OkHttp Response Java从 OkHttp 响应 Java 中获取值
【发布时间】:2020-06-01 18:40:33
【问题描述】:

我正在尝试从 OkHttp 响应正文字符串中获取值,但出现以下错误

java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $

响应正文字符串如下所示(response.body().toString()

        {
            "MerchantRequestID":"000000000000",
            "CheckoutRequestID":"170220202216211826",
            "ResponseCode": "0",
            "ResponseDescription":"Request accepted for processing",
            "CustomerMessage":"Request accepted for processing"
        }

我是这样解析的

Gson g = new Gson();
SuccessResponse resp = g.fromJson(resp.body().toString(),SuccessResponse.class); 

如何从响应字符串中获取单个值。

【问题讨论】:

标签: java spring-boot okhttp


【解决方案1】:

您可以使用该字段创建 POJO(手动或使用 this 等服务)。然后您可以通过这种方式创建 POJO 的实例:

String json = "{'MerchantRequestID': '000000000000','CheckoutRequestID':'170220202216211826','ResponseCode': '0','ResponseDescription':'Request accepted for processing','CustomerMessage':'Request accepted for processing'}";
    Gson g = new Gson();
    Example example = g.fromJson(json, Example.class);
    System.out.print(example.getCheckoutRequestID());

【讨论】:

  • 我已按问题更新,我现在收到 java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $ error
  • 为您更新。该示例正常工作。确保您的类已正确声明。
猜你喜欢
  • 2021-07-11
  • 1970-01-01
  • 2015-08-26
  • 2015-09-11
  • 2017-08-30
  • 2017-08-22
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
相关资源
最近更新 更多