Skip to content

Releases: NeuroJSON/jsonlab

JSONLab 2.9.8 (codename: Micronus Prime - beta)

28 Mar 20:19
Compare
Choose a tag to compare

image

JSONLab - compact, portable, robust JSON/binary-JSON encoder/decoder for MATLAB/Octave

Click here to register and download JSONLab 2.9.8

v2.9.8

Compatible Specifications

What's New

We are excited to announce that the JSONLab project, as the official reference library for both JData and BJData specifications, has been funded by the US National Institute of Health (NIH) as part of the NeuroJSON project (https://neurojson.org and https://neurojson.io).

The goal of the NeuroJSON project is to develop scalable, searchable, and reusable neuroimaging data formats and data sharing platforms. All data produced from the NeuroJSON project will be using JSON/Binary JData formats as the underlying serialization standards and the lightweight JData specification as language-independent data annotation standard, all of which have been evolved from the over a decade development of JSONLab.

JSONLab v2.9.8 - code named "Micronus Prime - beta" - is the beta-release of the next milestone (v3.0), containing a number of key feature enhancements and bug fixes. The major new features include

  1. exporting JSON Memory-Map (jsonget,jsonset) for rapid disk-map like reading/writing of JSON/binary JSON files and streams, implementing JSON-Mmap spec v1 Draft 1
  2. supporting JSONPath query (jsonpath) to MATLAB data and JSON/binary JSON file and streams, including deep-scan operators,
  3. (breaking) upgrading the supported BJData spec to V1 Draft 2 where the default numerical data byte order changed from Big-Endian to Little-Endian,
  4. adding initial support to JData _DataLink_ decoding to link multiple JSON/binary JSON files
  5. dynamically cache linked data files (jsoncache, jdlink) to permit on-demand download and processing of complex JSON-encoded datasets such as neuroimaging datasets hosted on https://neurojson.io
  6. support high-performance Blosc2 meta-compressor for storing large N-D array data,
  7. savejson/loadjson can use MATLAB/Octave built-in jsonencode/jsondecode using the BuiltinJSON option
  8. automatically switch from struct to containers.Map when encoded key-length exceeds 63
  9. provide fall-back zlib/gzip compression/decompression function (octavezmat) on Octave when ZMat is not installed
  10. include built-in .nii/.nii.gz/.jnii/.h5/.snirf/.tsv/.csv parsers to allow loadjd.m to read wide range of files
  11. include json2couch from jbids (https://github.com/NeuroJSON/jbids) to allow uploading json files to CouchDB server

There have been many major updates added to this release since the previous release v2.0 in June 2020. A list of the major changes are summarized below (with key features marked by *), including the support to BJData Draft-2 specification, new interface functions savejd/loadjd, and options to use MATLAB/Octave built-in jsonencode/jsondecode functions. The octave-jsonlab package has also been included in the official distributions of Debian Bullseye and Ubuntu 21.04 or newer.

  • 2024-03-28 [b39c374] [feat] add json2couch from jbids toolbox
  • 2024-03-27*[2e43586] [feat] merge nii/jnii/hdf5/tsv reading functions self-contained
  • 2024-03-27 [b482c8f] [test] pass all tests on matlab R2010b
  • 2024-03-27 [2008934] [doc] additional documentations on decompression functions
  • 2024-03-27 [0a582fb] [doc] add documentations for jsonpath, jsoncache, jdlink, and maxlinklevel
  • 2024-03-27 [5dba1de] [bug] .. searches deep level of struct, make jdlink work for Octave 4.2 and 5.2
  • 2024-03-27 [fea481e] [doc] add line-by-line comment on examples, add jsonset/jsonget
  • 2024-03-26 [e1d386d] [feat] support saving dictionary to json and bjdata
  • 2024-03-26 [dfc744b] [feat] support caching data from any URL using hash, add NO_ZMAT flag
  • 2024-03-24 [22d297e] [doc] fix README.rst formatting issues
  • 2024-03-24 [7e27db5] [doc] update documentation, preparing for v2.9.8 release
  • 2024-03-24 [1227a0b] [format] reformat
  • 2024-03-24 [67f30ca] [feat] support using . or [] in JSONPath to escape dots in key names
  • 2024-03-24 [ee830cd] [bug] fix error_pos error when giving a non-existant input file
  • 2024-03-24 [d69686d] [feat] add jdlink to dynamically download and cache linked data
  • 2024-03-22 [772a1ef] [ci] fix octave failed test
  • 2024-03-22*[cff529a] [test] add jsonpath test, refine jsonpath syntax support
  • 2024-03-22 [22435e4] [bug] fix jsonpath handling of recursive deep scans
  • 2024-03-21 [c9f8a20] [bug] support deep scan in cell and struct, merge struct/containers.Map
  • 2024-03-21 [394394a] [bug] improve jsonpath cell with deep scan
  • 2024-03-20 [a599e71] [feat] add jsoncache to handle _DataLink_ download cache, rename jsonpath
  • 2024-02-19*[4f2edeb] [feat] support .. jsonpath operator for deep scan
  • 2024-01-11 [c43a758] [bug] fix missing index_esc reset, add test for automap
  • 2024-01-11*[ef5b472] [feat] automatically switch to map object when key length > 63
  • 2023-11-17 [ee24122] use sprintf to replace unescapejsonstring
  • 2023-11-12 [abe504f] [ci] test again on macos-12
  • 2023-11-12 [d2ff26a] [ci] install octave via conda on macos to avoid hanged install
  • 2023-11-07 [33263de] completely reformat m-files using miss_hit
  • 2023-11-07 [3ff781f] make octavezmat work on matlab
  • 2023-10-29 [ea4a4fd] make test script run on MATLAB R2010b
  • 2023-10-27 [ca91e07] use older matlab due to matlab-actions/run-command#43
  • 2023-10-27 [4bf8232] add NO_ZMAT flag, fix fread issue
  • 2023-10-27*[ce3c0a0] add fallback zlib/glib support on Octave via file-based zip/unzip
  • 2023-10-26 [7ab1b6e] fix error for expecting an ending object mark when count is given
  • 2023-09-08 [6dfa58e] Fix typos found by codespell
  • 2023-06-27 [7d7e7f7] fix typo of compression method
  • 2023-06-27*[c25dd0f] support blosc2 codecs in save and load data, upgrade jsave/jload
  • 2023-06-19 [b23181a] test root-level indentation
  • 2023-06-19 [5bfde65] add indentation test
  • 2023-06-19 [b267858] fix CI errors related to octave utf-8 handling
  • 2023-06-19 [1e93d07] avoid octave 6.4+ regexp non-utf8 error see discussions at octave bug thread: https://savannah.gnu.org/bugs/index.php?57107
  • 2023-06-15 [8f921ac] fix broken tests
  • 2023-06-11*[6cb5f12] allow linking binary jdata files inside json
  • 2023-06-10 [2d0649b] do not compress long string by default, read bjd from URI
  • 2023-06-10 [5135dea] saving JSON with UTF-8 encoding, fix #71
  • 2023-06-10*[a3c807f] add zstdencode and zstddecode via new version of zmat
  • 2023-06-07 [837c8b5] fix containers.Map indentiation bug with a single element
  • 2023-06-07 [747c99b] fix string indentation, add option EmptyArrayAsNull, fix #91
  • 2023-06-05*[cf57326] support blosc2 meta compressors
  • 2023-05-05 [d37a386] use {:} to expand varargin
  • 2023-04-23 [03311d2] remove README.txt, no longer used, fix #88
  • 2023-04-21 [49eceb0] Fix typo not found by codespell
  • 2023-04-21 [75b1fdc] Fix typos found by codespell
  • 2023-04-17 [8fea393] revert savejson change
  • 2023-04-17 [9554a44] Merge branch 'master' of github.com:fangq/jsonlab
  • 2023-04-17 [3c32aff] speed up string encoding and decoding
  • 2023-04-09*[8c8464f] rename jamm files to pmat - portable mat, will add jsonmmap
  • 2023-04-09 [aa1c2a4] drop ubuntu-18.04
  • 2023-04-08 [9173525] replace regexp to ismember due to octave bug 57107; test mac
  • 2023-04-08 [67065dc] fix matlab test
  • 2023-04-08 [8dcedad] use alternative test to avoid octave bug 57107
  • 2023-04-08*[9b6be7b] add github action based tests
  • 2023-02-24 [cb43ed1] add bug fix test section
  • 2023-02-24 [2412ebf] only simplify all-numeric or all-struct cells
  • 2023-02-23 [d4e77e1] add missing file extension
  • 2023-02-23 [408cc2e] fix loadjd and savejd file extension match, add jbids
  • 2023-02-22 [29bac9d] fix broken jdatahash
  • 2023-02-22*[69a7d01] add a portable data hash function
  • 2023-02-09 [0448eb1] preventing matlab 2022b converting string to unicode
  • 2022-11-21 [9ce91fc] handle empty struct with names, fix #85
  • 2022-11-20 [9687d17] accept string typed file name, close #84
  • 2022-08-12 [283e5f1] output data depends on nargout
  • 2022-08-08 [c729048] avoid conjugating complex numbers, fix #83
  • 2022-06-05*[fa35843] implementing JSON-Mmap spec draft 1, https://neurojson.org/jsonmmap/draft1
  • ...
Read more

JSONLab 2.0 (codename: Magnus Prime)

14 Jun 19:17
Compare
Choose a tag to compare

What's New

Nine years in the making, JSONLab 2.0 (codename: Magnus Prime) has finally arrived!

JSONLab 2.0 is not just a MATLAB/Octave toolbox, but a reference library to the below two new data specifications:

Numerous updates have been added in this milestone release since its previous
version v1.9.8 in Oct. 2019. A list of the major changes are summarized below
(with key features marked by *), including the support to _ArrayShape_ to
efficiently encode special matrices, the addition of jsave/jload to save
and restore variables in MATLAB/Octave like the save/load commands
(experimental), and the associated Python modules (jdata and bjdata):

  • 2020-06-13 [81feef3] skip no-op markers, update documentation
  • 2020-06-13 [4904155] jload load data to struct, test if loadbj input is buffer, update error msg
  • 2020-06-12 [c334799] change default workspace to caller for jload and jsave
  • 2020-06-10 [c883546] fix keeptype single integer bug
  • 2020-06-09*[ ] created jdata and bjdata python modules to share data with MATLAB
  • 2020-06-08*[cbde607] add savebj and loadbj to dedicate to loading and saving bjdata
  • 2020-06-08*[e2451e1] add unit testing script, fix issues found in the testing unit
  • 2020-06-06 [a44015f] accelerate fast_match_bracket, drop unicode2native for speed
  • 2020-06-06 [eefccf3] call jsonencode/decode in jsave/jload, parse embedded jdata struct
  • 2020-06-05 [9434103] support Toeplitz matrices, use case-insensitive comparison
  • 2020-06-04 [3119ce4] jdatadecode now handles ArrayOrder
  • 2020-06-04 [89b844c] remove forced root name, update internal test results
  • 2020-06-02*[15ca7ae] add keeptype option to jsave and saveubjson
  • 2020-06-02 [7f2cbc4] make jsave and jload work on octave
  • 2020-06-01*[8829d6b] apply data compression to strings, new datatype char
  • 2020-06-01 [270cbf6] fix loadmsgpack ND array issue
  • 2020-06-01*[919f502] add jsave and jload for portable data sharing
  • 2020-05-31 [df3a4fa] debug arrayshape related changes and test all demo scripts
  • 2020-05-31*[fc0b285] adding support to ArrayShape to record special matrices
  • 2020-05-15*[d88d454] jsonlab is compatible with matlab R2008
  • 2020-05-13 [86efe89] flag to prevent embedding ND array size specifier
  • 2020-05-07 [a189a50] use more robust integer type testing
  • 2020-05-06*[82f5249] saveubjson now implments BJData spec Draft1,https://github.com/fangq/bjdata
  • 2020-05-03 [34bca22] add prj file to compile a matlab package, close #60
  • 2020-05-03 [82dfdcc] handle empty array in loadmsgpack, fix #63, patch by stfnp
  • 2020-03-08 [7499bd8] Merge pull request #61 from j2L4e/patch-1
  • 2020-02-09*[6984111] add UseMap option to avoid key name conversion
  • 2019-11-16 [e46221a] if ArraySize has a single length, treat as a row vector
  • 2019-11-01 [f2bfb65] fix a uint8 upper bound bug
  • 2019-10-24 [cc4491d] avoid escaping base64 str, avoid double processing preencoded arrayzipdata
  • 2019-10-24 [4dc76ef] make example script compatible with matlab R2010
  • 2019-10-24 [ad8be26] disable underscore escaping in octave,update all tests and outputs
  • 2019-10-24 [d4275c6] reduce jsonopt calls to speed up encoding and decoding
  • 2019-10-23 [82c9e91] fix invalid jdatadecode example
  • 2019-10-23 [398539d] reoptimize for speed
  • 2019-10-22*[650b5ec] enable jdataencode in savejson and saveubjson

Please note that JSONLab v2.0 is now compliant with JData Spec Draft 3; in
comparison, v1.9.8 is compatible with Draft 2; v1.9 and previous releases are
compatible with Draft 1. JSONLab v2.0 can read all data files generated by
v1.9.8, but v1.9.8 can not read the new UBJSON markers introduced in v2.0.

The newly introduced jsave/jload functions are in the experimental stage.
They generate .jamm files which are renamed binary-JData/UBJSON files;
they can be 50% smaller than .mat files if using jsave(...,'compression','lzma')
and can be readily opened among a long list of programming environments
such as Python, JavaScript and Go.

The saveubjson/loadubjson functions added support to the Binary JData specification (BJData)
v1 Draft-1 (https://github.com/fangq/bjdata) and are now renamed as savebj/loadbj
(saveubjson/loadubjson are kept for compatibility purposes as aliases to the new
functions). The BJData spec is largely compatible with UBJSON spec Draft 12, with the
following differences (we are working with the UBJSON maintainer to merge
these two specifications):

  • BJData adds 4 new numeric data types: uint16 [u], uint32 [m], uint64 [M]
    and float16 [h] ('''new in JSONLab v2.0''')
  • BJData supports an optimized ND array container (supported in JSONLab since 2013)
  • BJData does not convert NaN/Inf/-Inf to null (supported in JSONLab since 2013)

To avoid using the new type markers, one should attach 'UBJSON',1 in the savebj
command as

   savebj('',data,'FileName','myfile.bjd','UBJSON',1);

To read data files generated by JSONLab v1.9 or older versions, you need to attach
option 'FormatVersion', 1.9 in all the loadjson/savejson function calls.

To convert an older file (JSON/UBJSON) to the new format, you should run

   data=loadjson('my_old_data_file.json','FormatVersion',1.9)
   savejson('',data,'FileName','new_file.json')

You are strongly encouraged to convert all pre-v1.9.8 generated data files using the new
format.

Introduction

JSONLab is a free and open-source JSON/UBJSON/MessagePack encoder and
decoder written in the native MATLAB language. It can be used to convert a MATLAB
data structure (array, struct, cell, struct array, cell array, and objects) into
JSON/UBJSON/MessagePack formatted strings and files, or to parse a
JSON/UBJSON/MessagePack file into MATLAB data structure. JSONLab supports both
MATLAB and GNU Octave (a free MATLAB clone).

JSON (JavaScript Object Notation) is a highly portable, human-readable and "fat-free" text format
to represent complex and hierarchical data, widely used for data-exchange in applications.
UBJSON (Universal Binary JSON) is a binary JSON format,
specifically designed to specifically address the limitations of JSON, permitting
efficient storage of binary data with strongly typed data records, resulting in smaller
file sizes and fast encoding and decoding. MessagePack is another binary
JSON-like data format widely used in data exchange in web/native applications.
It is slightly more compact than UBJSON, but is not directly readable compared
to UBJSON.

We envision that both JSON and its binary counterparts will play important
rules not only for light-weight data storage, but also for storage and interchange
of scientific data. It has both the flexibility and generality as in other general-purpose
file specifications, such as HDF5 but has significantly reduced complexity
and excellent readability.

Towards this goal, we have developed the JData Specification (https://github.com/fangq/jdata)
to standardize serializations of complex scientific data structures, such as
N-D arrays, sparse/complex-valued arrays, trees, maps, tables and graphs using
JSON/binary JSON constructs. The text and binary formatted JData files are
syntactically compatible with JSON/UBJSON formats, and can be readily parsed
using existing JSON and UBJSON parsers. JSONLab is not just a parser and writer
of JSON/UBJSON data files, but one that systematically converts complex scientific
data structures into human-readable and universally supported JSON forms using the
standardized JData data annotations.

Installation

The installation of JSONLab is no different from installing any other
MATLAB toolbox. You only need to download/unzip the JSONLab package
to a folder, and add the folder's path to MATLAB/Octave's path list
by using the following command:

    addpath('/path/to/jsonlab');

If you want to add this path permanently, you need to type pathtool,
browse to the root folder of JSONLab and add to the list, then click "Save".
Then, run rehash in MATLAB, and type "which savejson", if you see an
output, that means JSONLab is installed for MATLAB/Octave.

If you use MATLAB in a shared environment such as a Linux server, the
best way to add path is to type

   mkdir ~/matlab/
   nano ~/matlab/startup.m

and type addpath('/path/to/jsonlab') in this file, save and exit the editor.
MATLAB will execute this file every time it starts. For Octave, the file
you need to edit is ~/.octaverc , where "~" represents your home directory.

To use the data compression features, please download the ZMat toolbox from
https://github.com/fangq/zmat/releases/latest and follow the instruction to
install ZMat first. The ZMat toolbox is required when compression is used on
MATLAB running in the -nojvm mode or GNU Octave, or 'lzma/lzip/lz4/lz4hc'
compression methods are specified. ZMat can also compress large arrays that
MATLAB's Java-based compression API does not support.

Install JSONLab on Fedora 24 or later

JSONLab has been available as an official Fedora package since 2015. You may
install it directly using the below command

   sudo dnf install octave-jsonlab

To enable data compression/decompression, you need to install octave-zmat using

   sudo dnf install octave-zmat

Install JSONLab on Arch Linux

JSONLab is also available on Arch Linux. You may install it using the below command

   sudo pikaur -S jsonlab

Using `jsave/j...

Read more

JSONLab 1.9.8 (codename: Magnus - beta)

02 Nov 03:19
Compare
Choose a tag to compare

What's New

JSONLab v1.9.8 is the beta release of the next milestone - code named "Magnus".

Starting from this release, JSONLab supports encoding/decoding MessagePack,
a widely-used binary JSON-like data format. Via ZMat v0.9, JSONLab v1.9.8
also supports LZMA/LZ4/LZ4HC data compression/decompression. More importantly,
JSONLab is now the official reference implementation for JData Specification (Draft 2)
as defined in https://github.com/fangq/jdata, the foundation for the OpenJData
Project (http://openjdata.org).

There have been numerous major updates to this toolbox since the previous
release v1.9 in May 2019. A list of the major changes are summarized below
with key features marked by *:

  • 2019-10-22*[650b5ec] enable preencode by default for savejson and saveubjson
  • 2019-10-21*[874945f] decode graph data, encode non-char-keyed map data
  • 2019-10-18 [11712b7] add any2jd, pass opt to name check, add more options
  • 2019-10-18*[f97de9b] extract name encoding/decoding to separate function, like in easyh5
  • 2019-10-17*[9d0fd4a] rewrite jdataencode
  • 2019-10-15 [23f14d6] minor updates to make msgpack to work on octave
  • 2019-09-16*[689cb40] support lz4 and lz4hc compression via zmat v0.9
  • 2019-07-11*[06d33aa] update zmat test to support zmat v0.8 mox-the-fox
  • 2019-06-24*[eba4078] saving table objects with new syntax
  • 2019-06-12 [3eb6d56] change ArrayCompression keywords to ArrayZip to be short
  • 2019-06-12*[e5f2ffb] complete saveubjson debug mode, add compression example
  • 2019-06-11 [ebbcfd2] pass formatversion tag to jdatadecode
  • 2019-06-10*[95b2eb0] add jdataencode and jdatadecode
  • 2019-06-10*[f86219d] major update: use row-major for N-D array, incompatible with old JSONLab
  • 2019-05-31*[0c467ee] support lzma and lzip compression decompression via ZMat Toolbox
  • 2019-05-31 [599ee4c] support categorical data
  • 2019-05-30*[d47be45] fast bracket matching
  • 2019-05-24*[0ec2d01] rewriting fastarrayparser, 10x faster for Octave, close #4
  • 2019-05-22*[d8c19b8] add support to MessagePack, close #53, add NestArray option, close #6
  • 2019-05-19*[c87e7d2] support containers.Map

Please note that JSONLab v1.9.8 is compliant with JData Spec Draft 2, while
v1.9 and previous releases are compatible with Draft 1. The main differences are

  • _ArrayCompressionMethod_, _ArrayCompressionSize_ and _ArrayCompressedData_
    were replaced by _ArrayZipType_, _ArrayZipSize_ and _ArrayZipData_, respectively
  • The serialization of N-D array data stored in _ArrayData_ was changed from column-major to
    row-major

To read data files generated by JSONLab v1.9 or older versions, you need to attach
option 'FormatVersion', 1.9 in all loadjson/savejson function calls.
To convert an older file (JSON/UBJSON) to the new format, you should run

   data=loadjson('my_old_data_file.json','FormatVersion',1.9)
   savejson('',data,'FileName','new_file.json')

You are strongly encouraged to convert all previously generated data files using the new
format.

Introduction

JSONLab is a free and open-source implementation of a JSON/UBJSON/MessagePack
encoder and a decoder in the native MATLAB language. It can be used to convert a
MATLAB data structure (array, struct, cell, struct array, cell array, and objects) into
JSON/UBJSON/MessagePack formatted strings, or to decode a JSON/UBJSON/MessagePack
file into MATLAB data structure. JSONLab supports both MATLAB and GNU Octave
(a free MATLAB clone).

JSON (JavaScript Object Notation, http://json.org/ ) is a highly portable, human-readable
and "fat-free" text format to represent complex and hierarchical data. It is as powerful as
XML, but less verbose. JSON format is widely used for data-exchange in applications.

UBJSON (Universal Binary JSON, http://ubjson.org/) is a binary JSON format,
specifically optimized for compact file size and better performance while keeping
the semantics as simple as the text-based JSON format. Using the UBJSON
format allows to wrap complex binary data in a flexible and extensible
structure, making it possible to process complex and large dataset without accuracy
loss due to text conversions. MessagePack is another binary JSON-like data
format widely used in data exchange in web/native applications. It is slightly more
compact than UBJSON, but is not directly readable compared to UBJSON.

We envision that both JSON and its binary counterparts will play important roles as
mainstream data-exchange formats for scientific research. It has both the flexibility
and generality as offered by other popular general-purpose file specifications, such
as HDF5 but with significantly reduced complexity and excellent readability.

Towards this goal, we have developed the JData Specification (https://github.com/fangq/jdata)
to standardize serializations of complex scientific data structures, such as
N-D arrays, sparse/complex-valued arrays, trees, maps, tables and graphs using
JSON/binary JSON constructs. The text and binary formatted JData files are
syntactically compatible with JSON/UBJSON formats, and can be readily parsed
using existing JSON and UBJSON parsers.

Please note that data files produced by saveubjson may utilize a special
"optimized header" to store N-D (N>=2) arrays, as defined in the JData Specification Draft 2.
This feature is not supported by UBJSON Specification Draft 12. To produce
UBJSON files that can be parsed by UBJSON-Draft-12 compliant parsers, you must
add the option 'NestArray',1 in the call to saveubjson.

Installation

The installation of JSONLab is no different from installing any other
MATLAB toolbox. You only need to download/unzip the JSONLab package
to a folder, and add the folder's path to MATLAB/Octave's path list
by using the following command:

    addpath('/path/to/jsonlab');

If you want to add this path permanently, you can type "pathtool",
browse to the JSONLab root folder and add to the list, then click "Save".
Then, run "rehash" in MATLAB, and type "which savejson", if you see an
output, that means JSONLab is installed for MATLAB/Octave.

If you use MATLAB in a shared environment such as a Linux server, the
best way to add path is to type

   mkdir ~/matlab/
   nano ~/matlab/startup.m

and type addpath('/path/to/jsonlab') in this file, save and quit the editor.
MATLAB will execute this file every time it starts. For Octave, the file
you need to edit is ~/.octaverc , where "~" is your home directory.

Install JSONLab on Fedora 24 or later

JSONLab has been available as an official Fedora package since 2015. You may
install it directly using the below command

   sudo dnf install octave-jsonlab

To enable data compression/decompression, you are encouraged to install octave-zmat using

   sudo dnf install octave-zmat

Install JSONLab on Arch Linux

JSONLab is also available on Arch Linux. You may install it using the below command

   sudo pacman -S jsonlab

JSONLab 1.9 (codename: Magnus - alpha)

06 May 23:12
Compare
Choose a tag to compare

JSONlab ChangeLog (key features marked by *):

== JSONlab 1.9 (codename: Magnus - alpha), FangQ <q.fang neu.edu> ==

2019-05-06 [25ad795] unescape strings in loadjson.m
2019-05-04 [2e317c9] explain extra compression fields
2019-05-02 [1b1be65] avoid side effect of removing singletarray
2019-05-02*[8360fd1] support zmat based base64 encoding and decoding
2019-05-01*[c797bb2] integrating zmat, for zlib/gzip data compression
2019-04-29 [70551fe] remove warnings from matlab
2019-04-28 [0d61c4b] complete data compression support, close #52
2019-04-27 [804115b] avoid typecast error
2019-04-27 [c166aa7] change default compressarraysize to 100
2019-04-27*[3322f6f] major new feature: support array compression and decompression
2019-03-13*[9c01046] support saving function handles, close #51
2019-03-13 [a8fde38] add option to parse string array or convert to char, close #50
2019-03-12 [ed2645e] treat string array as cell array in newer matlab
2018-11-18 [c3eb021] allow saving uint64 integers in saveubjson, fix #49

JSONlab 1.8 (codename: Nominus - final)

12 Jul 18:08
Compare
Choose a tag to compare

JSONlab ChangeLog (key features marked by *):

== JSONlab 1.8 (codename: Nominus - final), FangQ <q.fang (at) neu.edu> ==

2018-07-12 [03a6c25] update documentation, bump version to 1.8, tag Nominus
2018-07-12 [1597106] add patch provided by pjkoprowski to support MATLAB table, fix #29
2018-07-12 [f16cc57] fix #31, throw an error when : array construct is used
2018-07-12 [956e000] drop octave 3.x support, fix ubjson error in octave
2018-07-12 [e090f0a] fix octave warning for saveubjson
2018-07-12 [34284c7] fix issues #34 #39 #44 and #45, support double-quited strings
2017-09-06 [474d8c8] Merge pull request #41 from dasantonym/master
2017-08-07 [38b24fb] added package.json to be able to intall via npm, converted readme to utf-8, added .gitignore
2017-07-19 [ae7a5d9] Merge pull request #40 from astorfi/master
2017-07-17 [3176d44] Add files via upload
2017-07-17 [154ef61] Rename README.txt to README.rst
2017-03-27 [31b5bdc] simplify condition flow in matching_bracket
2017-03-27 [86ef12a] avoid error in matlab 2017a, close #34
2017-02-18 [4a09ac3] Merge pull request #32 from vrichter/master
2017-02-14 [e67d3a3] respect integer types

JSONlab v1.5 (Nominus alpha)

03 Jan 00:58
Compare
Choose a tag to compare

JSONlab ChangeLog (key features marked by *):

== JSONlab 1.5 (codename: Nominus - alpha), FangQ <q.fang (at) neu.edu> ==

2017/01/02 *use Big-endian format to store floating points (d/D) in saveubjson (Issue #25)
2017/01/02 *speedup parsing large unstructured data by 2x (Issue #9)
2017/01/01 make parsing independent of white space (Issue #30)
2016/08/27 allow to parse array of homogeneous elements (Issue #5)
2016/08/22 permit [] inside file names in savejson
2016/01/06 fix a bug that prevents saving to a file in savejson

JSONLab Optimus Update 2

30 Dec 23:24
Compare
Choose a tag to compare

JSONlab ChangeLog (key features marked by *):

== JSONlab 1.2 (codename: Optimus - Update 2), FangQ <q.fang (at) neu.edu> ==

2015/12/16 replacing string concatenation by str cells to gain 2x speed in savejson (Issue #17)
2015/12/11 fix FileName option case bug (SVN rev#495)
2015/12/11 add SingletCell option, add SingletArray to replace NoRowBracket (Issue #15,#8)
2015/11/10 fix bug for inerpreting file names as JSON string - by Mykhailo Bratukha (Pull #14)
2015/10/16 fix bug for cell with transposed data - by Insik Kim (Pull #12)
2015/09/25 support exporting matlab object to JSON - by Sertan Senturk (Pull #10, #11)