File Exchange

image thumbnail

json4mat

version 1.0.0.0 (12.9 KB) by Jonas Almeida
This Matlab toolbox converts JSON formats into (json2mat) and from (mat2json) Matlab structures.

9 Downloads

Updated 05 Apr 2010

View License

Details and manual at project web page at: http://json4mat.googlecode.com .

Cite As

Jonas Almeida (2020). json4mat (https://www.mathworks.com/matlabcentral/fileexchange/27169-json4mat), MATLAB Central File Exchange. Retrieved .

Comments and Ratings (8)

function[FILEWRITE] = Json_space_remover(FILENAME)
% Removes leading spaces in Json files, allowing them to be read.
% Maxwell Pinz 2017 Johns hopkins University
FILEWRITE = ['NoSpaces_',FILENAME];
fileID = fopen(FILENAME);
FID_write = fopen(FILEWRITE,'w');
C = textscan(fileID,'%s');
for ii = 1:length(C{1})
write_str = char(C{1}(ii));
fprintf(FID_write,'%s \n',write_str);
end
fclose(fileID);
fclose(FID_write);
end

Please note that that is a newer version at:

https://github.com/mathbiol/couch4mat/blob/gh-pages/json2mat.m

A very good read/write json support, which does not depend on any Java based library. Thanks.

Jordi Riba

Sorry, did not wake up today ...
kk=json2mat ('xx.js',1)

Jordi Riba

Hi, this file works really good to extract data from json files!!!

However I try to assign the results to a variable (to avoid having it in ans= ...) and I cannot do it. Any ideas? Thanks.

pangyuteng

Great tool! I just found a small bug. The code fails to write a correct JSON object when there's an empty array (and probably also fails with an empty cell).

Line 29 in mat2json.m it reads:

J(end)=']';

When the array is empty, this line will replace the opening '[' with the closing ']' (there's no trailing comma to replace!). A simple length check or string comparison to handle this edge case should fix it.

Thanks,
Jorge

Thanks for a very useful toolbox. I found a certain nesting of MATLAB structures and cell arrays which can not be taken for a round-trip to JSON and back. This snippet fails in the json2mat call:

mystruct0_f1.fieldA = 'A';
mystruct0_f1.fieldB = 'B';
mystruct0.field0 = 1;
mystruct0.field1 = mystruct0_f1;

mystruct1_f3.fieldC = 'C';
mystruct1_f3.fieldD = 'D';
mystruct1.field2 = 2;
mystruct1.field3 = mystruct1_f3;

mycarr = {mystruct0, mystruct1};

json2mat(mat2json(mycarr))

The output:

??? Reference to non-existent element of a cell array.

Error in ==> json2mat at 23
M=extract_struct(JJ{1}{1});

Error in ==> json2mat>extract_struct at 60
y.(t{1}{1})=json2mat(t{1}{2});

Error in ==> json2mat at 23
M=extract_struct(JJ{1}{1});

Error in ==> json2mat>extract_cell at 70
tag{i}=json2mat(x(indOC(i,1):indOC(i,2)));

Error in ==> json2mat at 26
M=extract_cell(JJ{1}{1});

Error in ==> jsontest at 13
json2mat(mat2json(mycarr))

MATLAB Release Compatibility
Created with R2010a
Compatible with any release
Platform Compatibility
Windows macOS Linux
Tags Add Tags

html/