How to parse a system(curl) response into workspace variables

6 ビュー (過去 30 日間)
Dwayne Esterline
Dwayne Esterline 2022 年 4 月 6 日
編集済み: Poorna 2023 年 9 月 21 日
Hello- Can anyone provide some insight into how to properly parse the system(curl) response into matlab.
It is currently returned into a string field, but I need to get the individual name/value pairs as variables.
No doubt there is a better way to make this request using webread, but I have been unsuccessful in formatting the headers properly, so have been using curl.
The objective is to pull these two pairs and save them as seperate variables in matlab
"access_token" : "n0f9jeyyc"
"expires_in" : 1800
The system(curl) request (with token abbreviated)
>>>>>>>
command = 'curl -X POST --header "Content-Type: application/x-www-form-urlencoded" -d "grant_type=refresh_token&refresh_token=uc80SIH3400B75E&access_type=&code=&client_id=CPUNQFIRUX1FHKWW8XJO7DMZWRCRQGMU%40AMER.OAUTHAP&redirect_uri=http%3A%2F%2Flocalhost" "https://api.tdameritrade.com/v1/oauth2/token"';
[response, curl_response] = system(command);
>>>>>>>
The response which is placed in one large string;
%%%%%
curl_response =
' % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 2636 100 1489 100 1147 5304 4086 --:--:-- --:--:-- --:--:-- 9448
{
"access_token" : "n0f9jeyyc",
"scope" : "PlaceTrades AccountAccess MoveMoney",
"expires_in" : 1800,
"token_type" : "Bearer"
}'
%%%%%

回答 (1 件)

Poorna
Poorna 2023 年 9 月 21 日
編集済み: Poorna 2023 年 9 月 21 日
Hello Dwayne,
I understand that you are looking to parse the response returned by the system function after running the cURL command and extract the values of "access_token" and "expires_in".
You can follow the below steps to achieve this:
  • Use the “regexp function to extract the JSON portion from the curl_response string. This can be done by searching for the pattern enclosed within curly braces.
jsonStr = regexp(curl_response, '{.*}', 'match', 'once');
  • Next, utilize the jsondecode function to parse the extracted JSON string and convert it into a MATLAB struct.
jsonData = jsondecode(jsonStr);
  • Finally, access the individual name/value pairs ("access_token" and "expires_in") from the parsed JSON data using the dot operator.
% Access the individual name/value pairs as variables
access_token = jsonData.access_token;
expires_in = jsonData.expires_in;
Please refer to the following documentation for more information on the functions used:
Hope this Helps!

カテゴリ

Help Center および File ExchangeJSON Format についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by