Convert Struct to Readable JSON(Pretty Print)

242 views (last 30 days)
Every struct I pass to jsonecode gets converted to a 1 by N char array with no newline chacters. Therefore, when I export the json as to a text file I only have one line. The file is not easly readble because I have to scroll the JSON text horizontaly. How can I make jsonencode's output easily readable(pretty print)?
I get this.
{ "firstName": "John", "lastName": "Smith", "age": 25, "address": { "streetAddress": "3 Apple Hill Dr", "city": "Natick", "state": "MA", "postalCode": "01760" }, "phoneNumber": [ { "type": "home", "number": "123 456 7890" }, { "type": "cell", "number": "098 765 4321" } ] }
I want something like this.
"firstName": "John",
"lastName": "Smith",
"age": 25,
"streetAddress": "3 Apple Hill Dr",
"city": "Natick",
"state": "MA",
"postalCode": "01760"
"type": "home",
"number": "123 456 7890"
"type": "cell",
"number": "098 765 4321"
Sean Bone
Sean Bone on 9 Dec 2022
Ciao @Davide Serina, la tua domanda si riferisce a come creare una struttura annidata in MATLAB o a come convertire una struttura annidata in JSON? Oppure ancora a come convertire una struttura MATLAB in JSON con le indentature per rappresentare gli annidamenti?

Sign in to comment.

Accepted Answer

Sean Bone
Sean Bone on 30 Jan 2022
In more recent Matlab versions, you can do the following:
jsonencode(data, "PrettyPrint", true);
Note that this option was only introduced in Matlab R2021a, despite the documentation for jsonencode not mentioning this explicitly.
  1 Comment
ILoveMATLAB on 17 May 2022
I guess I will accept this anwser; although, I was using an older version of matlab when I wrote this question.

Sign in to comment.

More Answers (1)

Gaurav Garg
Gaurav Garg on 20 Nov 2019
You can find a function which can help you resolve the problem you are facing in this file.
  1 Comment
Laurel Keyes
Laurel Keyes on 28 Jun 2021
This file is helpful but not if you have nested structures. I use a quick and dirty method, where you just string-replace the commas or brackets like so:
% assuming your structure is saved to val:
str = jsonencode(val);
% add a return character after all commas:
new_string = strrep(str, ',', ',\n');
% add a return character after curly brackets:
new_string = strrep(new_string, '{', '{\n')
% etc...
% Write the string to file
fid = fopen("filename.json",'w')
fprint(fid, new_string);
This method will not indent but does allow a slightly better formatting, no matter the structure of your json

Sign in to comment.




Community Treasure Hunt

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

Start Hunting!