JSONLab (Development Branch)

A toolbox to encode/decode JSON and UBJSON files in MATLAB/Octave
Updated 9 Jul 2024

This is the development branch (unstable) of the JSONLab Toolbox. The download link is directly pointed to the latest commit in the "master" branch of the JSONLab Github repository at https://github.com/fangq/jsonlab/

Please use this branch with caution: it may contain the latest bug fixes, but in the meantime, it may also contain partially implemented features, and may be unstable. If you need a stable release, please download from the below link instead


The previous stable release of JSONLab:

** JSONLab 2.0 beta (Magnus - beta) is released on 10/24/2019.**

Release URL: https://github.com/fangq/jsonlab/releases/tag/v1.9.8
Reference implementation for JData Specification Draft 2 - http://github.com/fangq/jdata
Depends on: https://www.mathworks.com/matlabcentral/fileexchange/71434-zmat

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 [http://www.gnu.org/software/octave GNU Octave] (a free MATLAB clone).

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

UBJSON ([http://ubjson.org/ Universal Binary JSON]) is a binary JSON format, specifically
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

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 [http://www.hdfgroup.org/HDF5/whatishdf5.html HDF5]
but with significantly reduced complexity and excellent readability.

Towards this goal, we have developed the JData Specification (http://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>1) 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``.

Please find detailed online help at http://iso2mesh.sourceforge.net/cgi-bin/index.cgi?jsonlab/Doc

External Links:
[1] https://www.mathworks.com/matlabcentral/fileexchange/39526-byte-encoding-utilities
[2] http://github.com/fangq/zmat

Cite As

Qianqian Fang (2024). JSONLab (Development Branch) (https://github.com/fangq/jsonlab), GitHub. Retrieved .

MATLAB Release Compatibility
Created with R2010a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Versions that use the GitHub default branch cannot be downloaded

Version Published Release Notes

-Update project title to reflect the dev-branch nature of this repo


- unescape strings in loadjson.m
- support zmat base64 encoding
- support data compression
- support function handles
- add option to parse string array or convert to char
- treat string array as cell array in newer matlab
- save 64bit int in ubjson

== JSONlab 1.8 (codename: Nominus - final) ==
- support strings object
- support MATLAB table objects
- fix octave warning for saveubjson
- avoid error in matlab 2017a, close #34
- added package.json
- added README.rst
- respect integer types


To view or report issues in this GitHub add-on, visit the GitHub Repository.
To view or report issues in this GitHub add-on, visit the GitHub Repository.