Skip to content

Commit afbedad

Browse files
author
fangq
committed
force array bracket in 1x1 struct to maintain depth when NoRowBracket is set to 0
git-svn-id: http://svn.code.sf.net/p/iso2mesh/code/trunk/jsonlab@486 786e58fb-9377-0410-9ff7-e4ac0ac0635c
1 parent a6cd612 commit afbedad

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

savejson.m

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -217,12 +217,14 @@
217217
dim=size(item);
218218
end
219219
len=numel(item);
220+
forcearray= (len>1 || (jsonopt('NoRowBracket',1,varargin{:})==0 && level>0));
220221
ws=struct('tab',sprintf('\t'),'newline',sprintf('\n'));
221222
ws=jsonopt('whitespaces_',ws,varargin{:});
222223
padding0=repmat(ws.tab,1,level);
223224
padding2=repmat(ws.tab,1,level+1);
224-
padding1=repmat(ws.tab,1,level+(dim(1)>1)+(len>1));
225+
padding1=repmat(ws.tab,1,level+(dim(1)>1)+forcearray);
225226
nl=ws.newline;
227+
226228
if(isempty(item))
227229
if(~isempty(name))
228230
txt=sprintf('%s"%s": []',padding0,checkname(name,varargin{:}));
@@ -232,23 +234,23 @@
232234
return;
233235
end
234236
if(~isempty(name))
235-
if(len>1) txt=sprintf('%s"%s": [%s',padding0,checkname(name,varargin{:}),nl); end
237+
if(forcearray) txt=sprintf('%s"%s": [%s',padding0,checkname(name,varargin{:}),nl); end
236238
else
237-
if(len>1) txt=sprintf('%s[%s',padding0,nl); end
239+
if(forcearray) txt=sprintf('%s[%s',padding0,nl); end
238240
end
239241
for j=1:dim(2)
240242
if(dim(1)>1) txt=sprintf('%s%s[%s',txt,padding2,nl); end
241243
for i=1:dim(1)
242244
names = fieldnames(item(i,j));
243-
if(~isempty(name) && len==1)
245+
if(~isempty(name) && len==1 && ~forcearray)
244246
txt=sprintf('%s%s"%s": {%s',txt,padding1, checkname(name,varargin{:}),nl);
245247
else
246248
txt=sprintf('%s%s{%s',txt,padding1,nl);
247249
end
248250
if(~isempty(names))
249251
for e=1:length(names)
250252
txt=sprintf('%s%s',txt,obj2json(names{e},getfield(item(i,j),...
251-
names{e}),level+(dim(1)>1)+1+(len>1),varargin{:}));
253+
names{e}),level+(dim(1)>1)+1+forcearray,varargin{:}));
252254
if(e<length(names)) txt=sprintf('%s%s',txt,','); end
253255
txt=sprintf('%s%s',txt,nl);
254256
end
@@ -259,7 +261,7 @@
259261
if(dim(1)>1) txt=sprintf('%s%s%s]',txt,nl,padding2); end
260262
if(j<dim(2)) txt=sprintf('%s%s',txt,sprintf(',%s',nl)); end
261263
end
262-
if(len>1) txt=sprintf('%s%s%s]',txt,nl,padding0); end
264+
if(forcearray) txt=sprintf('%s%s%s]',txt,nl,padding0); end
263265

264266
%%-------------------------------------------------------------------------
265267
function txt=str2json(name,item,level,varargin)

0 commit comments

Comments
 (0)