Skip to content
Snippets Groups Projects
Select Git revision
  • 59ffefd1ce817eb436e6be8fc035713f2c86ed19
  • master default protected
  • julia protected
  • 6.x protected
  • python-codegen
  • llvm-15
  • 5.x protected
  • 4.6 protected
  • uop
  • rework_pac
  • aux_vars_fix
  • julia-7.0.0
  • julia-6.4.0
  • julia-6.3.0
  • julia-6.2.0
15 results

ParsingDriver.cc

Blame
  • demo_jsonlab_basic.m 13.14 KiB
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %         Demonstration of Basic Utilities of JSONlab
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
    rngstate = rand ('state');
    randseed=hex2dec('623F9A9E');
    clear data2json json2data
    
    if(exist('isequaln')==0)
        isequaln=@isequal;
    end
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a simple scalar value \n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=pi
    savejson('',data2json)
    json2data=loadjson(ans)
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  an empty array \n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=[]
    savejson('',data2json)
    json2data=loadjson(ans)
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  an ampty string \n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=''
    savejson('emptystr',data2json)
    json2data=loadjson(ans)
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a simple row vector \n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=1:3
    savejson('',data2json)
    json2data=loadjson(ans)
    if(~isequaln(json2data,data2json))
        warning('conversion does not preserve original data');
    end
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a simple column vector \n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=(1:3)'
    savejson('',data2json)
    json2data=loadjson(ans)
    if(~isequaln(json2data,data2json))
        warning('conversion does not preserve original data');
    end
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a string array \n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=['AC';'EG']
    savejson('',data2json)
    json2data=loadjson(ans)
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a string with escape symbols \n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=sprintf('AB\tCD\none"two')
    savejson('str',data2json)
    json2data=loadjson(ans)
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a mix-typed cell \n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json={'a',true,[2;3]}
    savejson('',data2json)
    json2data=loadjson(ans)
    if(~isequaln(json2data,data2json))
        warning('conversion does not preserve original data');
    end
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a 3-D array in nested array form\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=reshape(1:(2*4*6),[2,4,6]);
    savejson('',data2json,'NestArray',1)
    json2data=loadjson(ans)
    if(~isequaln(json2data,data2json))
        warning('conversion does not preserve original data');
    end
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a 3-D array in annotated array form\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=reshape(1:(2*4*6),[2,4,6]);
    savejson('',data2json,'NestArray',0)
    json2data=loadjson(ans)
    if(~isequaln(json2data,data2json))
        warning('conversion does not preserve original data');
    end
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a 4-D array in annotated array form\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=reshape(1:(2*4*3*2),[2,4,3,2]);
    savejson('',data2json,'NestArray',0)  % nestarray for 4-D or above is not working
    json2data=loadjson(ans)
    if(~isequaln(json2data,data2json))
        warning('conversion does not preserve original data');
    end
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a 3-D array in nested array form (JSONLab 1.9)\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=reshape(1:(2*4*6),[2,4,6]);
    savejson('',data2json,'NestArray',1,'FormatVersion',1.8)
    json2data=loadjson(ans,'FormatVersion',1.8)
    if(~isequaln(json2data,data2json))
        warning('conversion does not preserve original data');
    end
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a 3-D array in annotated array form (JSONLab 1.9 or earlier)\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=reshape(1:(2*4*6),[2,4,6]);
    savejson('',data2json,'NestArray',0,'FormatVersion',1.8)
    json2data=loadjson(ans,'FormatVersion',1.8)
    if(~isequaln(json2data,data2json))
        warning('conversion does not preserve original data');
    end
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a complex number\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=1+2i
    savejson('',data2json)
    json2data=loadjson(ans) 
    if(~isequaln(json2data,data2json))
        warning('conversion does not preserve original data');
    end
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a complex matrix\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=magic(6);
    data2json=data2json(:,1:3)+data2json(:,4:6)*1i
    savejson('',data2json)
    json2data=loadjson(ans)
    if(~isequaln(json2data,data2json))
        warning('conversion does not preserve original data');
    end
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  MATLAB special constants\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=[NaN Inf -Inf]
    savejson('specials',data2json)
    json2data=loadjson(ans)
    if(~isequaln(json2data.specials,data2json))
        warning('conversion does not preserve original data');
    end
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a real sparse matrix\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=sprand(10,10,0.1)
    savejson('sparse',data2json,'FloatFormat','%.18g')
    json2data=loadjson(ans)
    if(~isequaln(json2data.sparse,data2json))
        warning('conversion does not preserve original data');
    end
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a complex sparse matrix\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=sprand(10,10,0.1);
    data2json=data2json-data2json*1i
    savejson('complex_sparse',data2json,'FloatFormat','%.18g')
    json2data=loadjson(ans)
    if(~isequaln(json2data.complex_sparse,data2json))
        warning('conversion does not preserve original data');
    end
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  an all-zero sparse matrix\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=sparse(2,3);
    savejson('all_zero_sparse',data2json)
    json2data=loadjson(ans)
    if(~isequaln(json2data.all_zero_sparse,data2json))
        warning('conversion does not preserve original data');
    end
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  an empty sparse matrix\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=sparse([]);
    savejson('empty_sparse',data2json)
    json2data=loadjson(ans)
    if(~isequaln(json2data.empty_sparse,data2json))
        warning('conversion does not preserve original data');
    end
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  an empty 0-by-0 real matrix\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=[];
    savejson('empty_0by0_real',data2json)
    json2data=loadjson(ans)
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  an empty 0-by-3 real matrix\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=zeros(0,3);
    savejson('empty_0by3_real',data2json)
    json2data=loadjson(ans)
    if(~isequaln(json2data.empty_0by3_real,data2json))
        warning('conversion does not preserve original data');
    end
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a sparse real column vector\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=sparse([0,3,0,1,4]');
    savejson('sparse_column_vector',data2json)
    json2data=loadjson(ans)
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a sparse complex column vector\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=data2json-1i*data2json;
    savejson('complex_sparse_column_vector',data2json)
    json2data=loadjson(ans)
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a sparse real row vector\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=sparse([0,3,0,1,4]);
    savejson('sparse_row_vector',data2json)
    json2data=loadjson(ans)
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a sparse complex row vector\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=data2json-1i*data2json;
    savejson('complex_sparse_row_vector',data2json)
    json2data=loadjson(ans)
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a structure\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=struct('name','Think Different','year',1997,'magic',magic(3),...
                     'misfits',[Inf,NaN],'embedded',struct('left',true,'right',false))
    savejson('astruct',data2json,struct('ParseLogical',1))
    json2data=loadjson(ans)
    class(json2data.astruct.embedded.left)
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a structure array\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=struct('name','Nexus Prime','rank',9);
    data2json(2)=struct('name','Sentinel Prime','rank',9);
    data2json(3)=struct('name','Optimus Prime','rank',9);
    savejson('Supreme Commander',data2json)
    json2data=loadjson(ans)
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a cell array\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=cell(3,1);
    data2json{1}=struct('buzz',1.1,'rex',1.2,'bo',1.3,'hamm',2.0,'slink',2.1,'potato',2.2,...
                  'woody',3.0,'sarge',3.1,'etch',4.0,'lenny',5.0,'squeeze',6.0,'wheezy',7.0);
    data2json{2}=struct('Ubuntu',['Kubuntu';'Xubuntu';'Lubuntu']);
    data2json{3}=[10.04,10.10,11.04,11.10]
    savejson('debian',data2json,struct('FloatFormat','%.2f'))
    json2data=loadjson(ans)
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  invalid field-name handling\n')
    fprintf(1,'%%=================================================\n\n')
    
    json2data=loadjson('{"ValidName":1, "_InvalidName":2, ":Field:":3, "项目":"绝密"}')
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a function handle\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=@(x) x+1
    savejson('handle',data2json)
    json2data=loadjson(ans)
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a 2D cell array\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json={{1,{2,3}},{4,5},{6};{7},{8,9},{10}};
    savejson('data2json',data2json)
    json2data=loadjson(ans)  % only savejson works for cell arrays, loadjson has issues
    
    fprintf(1,'\n%%=================================================\n')
    fprintf(1,'%%  a 2D struct array\n')
    fprintf(1,'%%=================================================\n\n')
    
    data2json=repmat(struct('idx',0,'data','structs'),[2,3])
    for i=1:6
        data2json(i).idx=i;
    end
    savejson('data2json',data2json)
    json2data=loadjson(ans)
    
    
    if(exist('datetime'))
        fprintf(1,'\n%%=================================================\n')
        fprintf(1,'%%  datetime object \n')
        fprintf(1,'%%=================================================\n\n')
    
        data2json=datetime({'8 April 2015','9 May 2015'}, 'InputFormat','d MMMM yyyy')
        savejson('',data2json)
        json2data=loadjson(ans)
    end
    
    if(exist('containers.Map'))
        fprintf(1,'\n%%=================================================\n')
        fprintf(1,'%%  a container.Maps object \n')
        fprintf(1,'%%=================================================\n\n')
    
        data2json=containers.Map({'Andy','William','Om'},[21,21,22])
        savejson('',data2json)
        json2data=loadjson(ans)
    end
    
    if(exist('istable'))
        fprintf(1,'\n%%=================================================\n')
        fprintf(1,'%%  a table object \n')
        fprintf(1,'%%=================================================\n\n')
    
        Names={'Andy','William','Om'}';
        Age=[21,21,22]';
        data2json=table(Names,Age)
        savejson('table',table(Names,Age))
        json2data=loadjson(ans)
    end
    
    try
        val=zlibencode('test');
        fprintf(1,'\n%%=================================================\n')
        fprintf(1,'%%  a 2-D array in compressed array format\n')
        fprintf(1,'%%=================================================\n\n')
    
        data2json=eye(10);
        data2json(20,1)=1;
        savejson('',data2json,'Compression','zlib','CompressionSize',0)  % nestarray for 4-D or above is not working
        json2data=loadjson(ans)
        if(~isequaln(json2data,data2json))
            warning('conversion does not preserve original data');
        end
    catch
    end
    
    rand ('state',rngstate);