【问题标题】:Apex (Salesforce) read json from response and store it in a string variableApex (Salesforce) 从响应中读取 json 并将其存储在字符串变量中
【发布时间】:2020-06-08 11:40:16
【问题描述】:

我正在尝试访问 API 端点,该端点在我调用时响应如下所示 response.getBody()

{ "oktaToken": "eyJraWQiOiIyNlN1NHFMNnVVZTVJX2M5X2Z3WmZvX09ON0dNUHRtQzlEeHFsTGplLS00IiwiYWxnIjoiUlMyNTYifQ.eyJ2ZXIiOjEsImp0aSI6IkFULlVINmdIOF9BcWJ" }

现在我想将此标记的值存储到一个字符串变量中。

response.getbody() 已经是一个字符串,但我希望将该值存储在一个字符串变量中。我不想对字符串 (response.getbody()) 进行任何操作,例如拆分和子字符串。

有没有使用json解析的东西,所以我可以通过传递key('oktaToken')来获取变量中token的值?

【问题讨论】:

    标签: salesforce apex apex-code salesforce-lightning aura-framework


    【解决方案1】:
    String jsonStr = '{ "oktaToken":"eyJraWQiOiIyNlN1NHFMNnVVZTVJX2M5X2Z3WmZvX09ON0dNUHRtQzlEeHFsTGplLS00IiwiYWxnIjoiUlMyNTYifQ.eyJ2ZXIiOjEsImp0aSI6IkFULlVINmdIOF9BcWJ" }';
    Map<String, String> m = (Map<String, String>) JSON.deserialize(jsonStr, Map<String, String>.class);
    String oktaToken = m.get('oktaToken');
    System.debug(oktaToken);
    

    这是你要找的吗?

    【讨论】:

      【解决方案2】:

      JSON.parse(string) 将使用输入字符串创建一个对象,然后可以使用点符号访问它的属性。

      所以在你的情况下,你可以这样做:

      var responseBody = JSON.parse(response.getBody());
      var oktaToken = responseBody.oktaToken;
      

      【讨论】:

      • 它需要反序列化,然后分配给一个字符串变量,语法完全不同,我试过了,但它不能识别 oktaToken。如下所示: LigClass obj = (LigClass)JSON.deserialize(response.getBody(), LigClass.class);
      猜你喜欢
      • 1970-01-01
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      相关资源
      最近更新 更多