Apex (Salesforce) 从响应中读取 json 并将其存储在字符串变量中

Apex (Salesforce) read json from response and store it in a string variable

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

{ "oktaToken": "eyJraWQiOiIyNlN1NHFMNnVVZTVJX2M5X2Z3WmZvX09ON0dNUHRtQzlEeHFsTGplLS00IiwiYWxnIjoiUlMyNTYifQ.eyJ2ZXIiOjEsImp0aSI6IkFULlVINmdIOF9BcWJ" }

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

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

有没有使用 json 解析的东西,这样我就可以通过传递密钥 ('oktaToken') 来获取变量中令牌的值?

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

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

var responseBody = JSON.parse(response.getBody());
var oktaToken = responseBody.oktaToken;
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);

这是您要找的吗?