diff --git a/savejson.m b/savejson.m index de6ae0cf62535d3ab322c97ec07a20de1a5cf493..3b1128238f8e25219ee6fdcf0a363379d6e9365f 100644 --- a/savejson.m +++ b/savejson.m @@ -496,7 +496,11 @@ else end end for e=1:len - val=escapejsonstring(item(e,:),varargin{:}); + if(strcmp('_ArrayZipData_',decodevarname(name,varargin{1}.unpackhex))==0) + val=escapejsonstring(item(e,:),varargin{:}); + else + val=item(e,:); + end if(len==1) obj=['"' decodevarname(name,varargin{1}.unpackhex) '": ' '"',val,'"']; if(isempty(name)) @@ -533,7 +537,8 @@ format=varargin{1}.formatversion; isnest=varargin{1}.nestarray; if(((isnest==0) && length(size(item))>2) || issparse(item) || ~isreal(item) || ... - (isempty(item) && any(size(item))) || varargin{1}.arraytostruct || (~isempty(dozip) && numel(item)>zipsize)) + (isempty(item) && any(size(item))) || varargin{1}.arraytostruct || ... + (~isempty(dozip) && numel(item)>zipsize && strcmp('_ArrayZipData_',decodevarname(name,varargin{1}.unpackhex))==0)) if(isempty(name)) txt=sprintf('%s{%s%s"_ArrayType_": "%s",%s%s"_ArraySize_": %s,%s',... padding1,nl,padding0,class(item),nl,padding0,regexprep(mat2str(size(item)),'\s+',','),nl); @@ -750,6 +755,9 @@ end %%------------------------------------------------------------------------- function newstr=escapejsonstring(str,varargin) newstr=str; +if(isempty(str) || isempty(regexp(str,'\W', 'once'))) + return; +end isoct=varargin{1}.isoctave; if(isoct) vv=sscanf(OCTAVE_VERSION,'%f'); diff --git a/saveubjson.m b/saveubjson.m index 530e789a305dbe6a13307d9ae5f68ca7654af26f..5809078d9a8f91114128043bd14d4fee19e19299 100644 --- a/saveubjson.m +++ b/saveubjson.m @@ -482,7 +482,8 @@ if(ismsgpack) isnest=1; end if((length(size(item))>2 && isnest==0) || issparse(item) || ~isreal(item) || ... - varargin{1}.arraytostruct || (~isempty(dozip) && numel(item)>zipsize)) + varargin{1}.arraytostruct || (~isempty(dozip) && numel(item)>zipsize ... + && strcmp('_ArrayZipData_',decodevarname(name,varargin{:}))==0)) cid=I_(uint32(max(size(item))),Imarker,varargin{:}); if(isempty(name)) txt=[Omarker{1} N_('_ArrayType_'),S_(class(item)),N_('_ArraySize_'),I_a(size(item),cid(1),Imarker,varargin{:}) ];