Trouble with jsondecode() and jsonencode()

53 vues (au cours des 30 derniers jours)
Rui Zhang
Rui Zhang le 3 Mai 2021
Commenté : Rui Zhang le 3 Mai 2021
I have a JSON file. I am trying to test the MATLAB functions before using them. So I loaded it
str1 = fileread('json_filename1.json');
mydata1 = jsondecode(str1)
str2 = jsonencode(mydata1)
fid = fopen('json_filename2.json','wt')
fprintf(fid,str2)
fclose(fid)
Then I go to the online JSON file editor: https://jsoneditoronline.org/#left=local.jagoxe to load both files. I am able to load 'json_filename1.json' but I can't load 'json_filename2.json' correctly. I got the following error message:
Failed to switch to "tree" mode because of Invalid JSON:
Parse error on line 1:
...,"errorDescription":"CreateACPath Execut
-----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got 'undefined'
It looks like either jsondecode() or jsonencode() has something wrong.
Also, when I used strcmp(str1,str2), I saw a lot of difference between them.
  3 commentaires
Rui Zhang
Rui Zhang le 3 Mai 2021
Hello,
Could you provide me your email address so I can send it to you by email? I don't want to post the JSON file here in a public place.
Thanks.
Rui
the cyclist
the cyclist le 3 Mai 2021
No, sorry.
But perhaps you could distill your JSON down to a simplified and/or obscured version that still shows the problem, but you are comfortable sharing? (This may also help narrow down exactly what is causing the issue.)

Connectez-vous pour commenter.

Réponses (1)

Sean de Wolski
Sean de Wolski le 3 Mai 2021
fprintf(fid,"%s",str2)
That way if there are format spec characters in the JSON they are not interpretted as such.
  1 commentaire
Rui Zhang
Rui Zhang le 3 Mai 2021
It works.
Thank you!
Rui

Connectez-vous pour commenter.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by