|
41 | 41 | % parts, and also "_ArrayIsComplex_":1 is added. |
42 | 42 | % opt.ParseLogical [0|1]: if this is set to 1, logical array elem |
43 | 43 | % will use true/false rather than 1/0. |
44 | | -% opt.NoRowBracket [1|0]: if this is set to 1, arrays with a single |
| 44 | +% opt.SingletArray [0|1]: if this is set to 1, arrays with a single |
45 | 45 | % numerical element will be shown without a square |
46 | 46 | % bracket, unless it is the root object; if 0, square |
47 | 47 | % brackets are forced for any numerical arrays. |
| 48 | +% opt.SingletCell [1|0]: if 1, always enclose a cell with "[]" |
| 49 | +% even it has only one element; if 0, brackets |
| 50 | +% are ignored when a cell has only 1 element. |
48 | 51 | % opt.ForceRootName [0|1]: when set to 1 and rootname is empty, savejson |
49 | 52 | % will use the name of the passed obj variable as the |
50 | 53 | % root object name; if obj is an expression and |
|
97 | 100 | varname=inputname(2); |
98 | 101 | end |
99 | 102 | if(length(varargin)==1 && ischar(varargin{1})) |
100 | | - opt=struct('FileName',varargin{1}); |
| 103 | + opt=struct('filename',varargin{1}); |
101 | 104 | else |
102 | 105 | opt=varargin2struct(varargin{:}); |
103 | 106 | end |
104 | 107 | opt.IsOctave=exist('OCTAVE_VERSION','builtin'); |
| 108 | +if(isfield(opt,'norowbracket')) |
| 109 | + warning('Option ''NoRowBracket'' is depreciated, please use ''SingletArray'' and set its value to not(NoRowBracket)'); |
| 110 | + if(~isfield(opt,'singletarray')) |
| 111 | + opt.singletarray=not(opt.norowbracket); |
| 112 | + end |
| 113 | +end |
105 | 114 | rootisarray=0; |
106 | 115 | rootlevel=1; |
107 | 116 | forceroot=jsonopt('ForceRootName',0,opt); |
|
184 | 193 | padding0=repmat(ws.tab,1,level); |
185 | 194 | padding2=repmat(ws.tab,1,level+1); |
186 | 195 | nl=ws.newline; |
187 | | -if(len>1) |
| 196 | +bracketlevel=~jsonopt('singletcell',1,varargin{:}); |
| 197 | +if(len>bracketlevel) |
188 | 198 | if(~isempty(name)) |
189 | 199 | txt=sprintf('%s"%s": [%s',padding0, checkname(name,varargin{:}),nl); name=''; |
190 | 200 | else |
|
202 | 212 | txt=sprintf('%s%s[%s',txt,padding2,nl); |
203 | 213 | end |
204 | 214 | for j=1:dim(2) |
205 | | - txt=sprintf('%s%s',txt,obj2json(name,item{i,j},level+(dim(1)>1)+(len>1),varargin{:})); |
| 215 | + txt=sprintf('%s%s',txt,obj2json(name,item{i,j},level+(dim(1)>1)+(len>bracketlevel),varargin{:})); |
206 | 216 | if(j<dim(2)) |
207 | 217 | txt=sprintf('%s%s',txt,sprintf(',%s',nl)); |
208 | 218 | end |
|
215 | 225 | end |
216 | 226 | %if(j==dim(2)) txt=sprintf('%s%s',txt,sprintf(',%s',nl)); end |
217 | 227 | end |
218 | | -if(len>1) |
| 228 | +if(len>bracketlevel) |
219 | 229 | txt=sprintf('%s%s%s]',txt,nl,padding0); |
220 | 230 | end |
221 | 231 |
|
|
231 | 241 | dim=size(item); |
232 | 242 | end |
233 | 243 | len=numel(item); |
234 | | -forcearray= (len>1 || (jsonopt('NoRowBracket',1,varargin{:})==0 && level>0)); |
| 244 | +forcearray= (len>1 || (jsonopt('SingletArray',0,varargin{:})==1 && level>0)); |
235 | 245 | ws=struct('tab',sprintf('\t'),'newline',sprintf('\n')); |
236 | 246 | ws=jsonopt('whitespaces_',ws,varargin{:}); |
237 | 247 | padding0=repmat(ws.tab,1,level); |
|
359 | 369 | padding1,checkname(name,varargin{:}),nl,padding0,class(item),nl,padding0,regexprep(mat2str(size(item)),'\s+',','),nl); |
360 | 370 | end |
361 | 371 | else |
362 | | - if(numel(item)==1 && jsonopt('NoRowBracket',1,varargin{:})==1 && level>0) |
| 372 | + if(numel(item)==1 && jsonopt('SingletArray',0,varargin{:})==0 && level>0) |
363 | 373 | numtxt=regexprep(regexprep(matdata2json(item,level+1,varargin{:}),'^\[',''),']',''); |
364 | 374 | else |
365 | 375 | numtxt=matdata2json(item,level+1,varargin{:}); |
366 | 376 | end |
367 | 377 | if(isempty(name)) |
368 | 378 | txt=sprintf('%s%s',padding1,numtxt); |
369 | 379 | else |
370 | | - if(numel(item)==1 && jsonopt('NoRowBracket',1,varargin{:})==1) |
| 380 | + if(numel(item)==1 && jsonopt('SingletArray',0,varargin{:})==0) |
371 | 381 | txt=sprintf('%s"%s": %s',padding1,checkname(name,varargin{:}),numtxt); |
372 | 382 | else |
373 | 383 | txt=sprintf('%s"%s": %s',padding1,checkname(name,varargin{:}),numtxt); |
|
0 commit comments