Json Parsing error on formatted text

조회 수: 9 (최근 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

댓글을 달려면 로그인하십시오.

채택된 답변

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 CenterFile Exchange에서 JSON Format에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by