|
217 | 217 | dim=size(item); |
218 | 218 | end |
219 | 219 | len=numel(item); |
| 220 | +forcearray= (len>1 || (jsonopt('NoRowBracket',1,varargin{:})==0 && level>0)); |
220 | 221 | ws=struct('tab',sprintf('\t'),'newline',sprintf('\n')); |
221 | 222 | ws=jsonopt('whitespaces_',ws,varargin{:}); |
222 | 223 | padding0=repmat(ws.tab,1,level); |
223 | 224 | 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); |
225 | 226 | nl=ws.newline; |
| 227 | + |
226 | 228 | if(isempty(item)) |
227 | 229 | if(~isempty(name)) |
228 | 230 | txt=sprintf('%s"%s": []',padding0,checkname(name,varargin{:})); |
|
232 | 234 | return; |
233 | 235 | end |
234 | 236 | 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 |
236 | 238 | else |
237 | | - if(len>1) txt=sprintf('%s[%s',padding0,nl); end |
| 239 | + if(forcearray) txt=sprintf('%s[%s',padding0,nl); end |
238 | 240 | end |
239 | 241 | for j=1:dim(2) |
240 | 242 | if(dim(1)>1) txt=sprintf('%s%s[%s',txt,padding2,nl); end |
241 | 243 | for i=1:dim(1) |
242 | 244 | names = fieldnames(item(i,j)); |
243 | | - if(~isempty(name) && len==1) |
| 245 | + if(~isempty(name) && len==1 && ~forcearray) |
244 | 246 | txt=sprintf('%s%s"%s": {%s',txt,padding1, checkname(name,varargin{:}),nl); |
245 | 247 | else |
246 | 248 | txt=sprintf('%s%s{%s',txt,padding1,nl); |
247 | 249 | end |
248 | 250 | if(~isempty(names)) |
249 | 251 | for e=1:length(names) |
250 | 252 | 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{:})); |
252 | 254 | if(e<length(names)) txt=sprintf('%s%s',txt,','); end |
253 | 255 | txt=sprintf('%s%s',txt,nl); |
254 | 256 | end |
|
259 | 261 | if(dim(1)>1) txt=sprintf('%s%s%s]',txt,nl,padding2); end |
260 | 262 | if(j<dim(2)) txt=sprintf('%s%s',txt,sprintf(',%s',nl)); end |
261 | 263 | 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 |
263 | 265 |
|
264 | 266 | %%------------------------------------------------------------------------- |
265 | 267 | function txt=str2json(name,item,level,varargin) |
|
0 commit comments