Json Parsing error on formatted text

8 ビュー (過去 30 日間)
Joe Rustan
Joe Rustan 2021 年 3 月 26 日
回答済み: Mohammad Sami 2021 年 3 月 29 日
Hi,
I have a script that reads formatted text from a Github release description. The text has bullets, some non-ASCII characters, etc. When I look at the string, the special characters are escaped (\r, etc). When I try to write this entire text block to another Github release, it fails with an "error parsing Json" error.
I believe this has to do with either a Conten-type header or UTF encoding, which I'm not fully familiar with.
Is there a straight-forward way in Matlab to read and write formatted text "as-is"?
Thanks.
Joe
  8 件のコメント
Joe Rustan
Joe Rustan 2021 年 3 月 29 日
Thanks Walter.
The command that is being built is:
C:\Program Files\Git\mingw64\bin\curl.exe" --user "<userid:github credentials>" "https:<github-URL/org/repo/releases -d "tag_name: <name-of-tag>",
"target_commitish: <commit-id>"
"name:<name-of-release",
"body:<rel-body"
I may have missed a few double-quotes and commas in the copy/paste and content replacement, but the actual command works fine with several other repos, so I know it is successful. I also tried adding "Content-type:application/json at the end of the string, but I get the same "error parsing JSON" message.
It is clear the error is happening due to the rel-body containing non-ASCII characters and formatted with bullets, bold text, etc. (which is Github's standard markup language).
Thanks for any expert help I can get. Maybe there is a better way than using the 'curl' command?
Joe
Walter Roberson
Walter Roberson 2021 年 3 月 29 日

サインインしてコメントする。

採用された回答

Mohammad Sami
Mohammad Sami 2021 年 3 月 29 日
I assume this is the api you are using.
On the documentation they show the curl request as follows.
curl \
-X POST \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/octocat/hello-world/releases \
-d '{"tag_name":"tag_name"}'
I believe you need to form your entire curl request as json string.
From the code I see you are missing the opening and closing {} as well as formatting of your -d argument is not json compliant
For example it should be something like this.
%curl...-d '{"tag_name":"<name-of-tag>","target_commitish":"<commit-id>","name":<name-of-release>","body":"<rel-body>"}'
Or you could can create a struct in matlab with the required parameters then use jsonencode function to form the required json string.
postdata.tag_name = name-of-tag;
postdata.target_commitish = commit-id;
postdata.name = name-of-release;
postdata.body = rel-body;
data = jsonencode(postdata);

その他の回答 (0 件)

カテゴリ

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

製品

Community Treasure Hunt

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

Start Hunting!

Translated by