Scilab Home Page | Wiki | Bug Tracker | Forge | Mailing List Archives | Scilab Online Help | File Exchange
ATOMS : Scilab JSON Toolbox details
Login with GitLab

Scilab JSON Toolbox

A Simple JSON Toolbox for Scilab
(7700 downloads for this version - 16981 downloads for all versions)
Details
Version
0.3
Author
Aditya Sengupta
Owner Organization
Indian Institute of Technology Bombay
Maintainers
Chin Luh Tan
Aditya Sengupta
Administrator ATOMS
Categories
License
Creation Date
August 30, 2019
Source created on
Scilab 6.0.x
Binaries available on
Scilab 6.0.x:
Windows 64-bit Windows 32-bit Linux 64-bit Linux 32-bit macOS
Install command
--> atomsInstall("json")
Description
            More information available at: http://forge.scilab.org/index.php/p/json/

Introduction
============

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It
is easy for humans to read and write. It is easy for machines to parse and
generate. It is based on a subset of the JavaScript Programming Language,
[Standard ECMA-262 3rd Edition - December 1999](http://www.ecma-international.org/publications/files/ecma-st/ECMA-262.pdf).


The JSON format is often used for serializing and transmitting structured data
over a network connection. It is primarily used to transmit data between a
server and web application, serving as an alternative to XML.

For more information, please read: 

[http://json.org/](http://json.org/)  
[http://en.wikipedia.org/wiki/Json](http://en.wikipedia.org/wiki/Json)

Structures: 
===========

Since JSON supports key-value objects, the parser interprets the key-value JSON
objects as Scilab ``struct`` objects. 

(Type ``help struct`` in Scilab for more information on Scilab structures.)

Consider the following example:

	{
	  "orderID": 12345,
	  "shopperName": "John Smith",
	  "shopperEmail": "johnsmith@example.com",
	  "contents": [
		{
		  "productID": 34,
		  "productName": "SuperWidget",
		  "quantity": 1
		},
		{
		  "productID": 56,
		  "productName": "WonderWidget",
		  "quantity": 3
		}
	  ],
	  "orderCompleted": true
	}


Assuming the above JSON text is saved in a text file in the current working
directory, the text can be loaded into Scilab and parsed thus: 

    json_eg = mgetl("eg_1.json");
    mystruct = JSONParse(json_eg)

This returns the following Scilab structure:

    mystruct  =
 
    orderID: 12345
    shopperName: "John Smith"
    shopperEmail: "johnsmith@example.com"
    contents: [1x2 struct]
    orderCompleted: "%T"

Individual elements in the structure can be accessed thus: 

Example 1:

    -->mystruct.orderID
     ans  =
 
        12345.

Example 2: 

	-->mystruct.contents.productName
	 ans  =
	 
	 
		   ans(1)
	 
	 SuperWidget   
	 
		   ans(2)
	 
	 WonderWidget   

Note that the JSON values of ``true``, ``false`` and ``null`` are represented in
Scilab as ``%T``, ``%F`` and ``%Nan``. Since Scilab contains a function called
``null()``, the function will be temporarily redefined by the parser. However,
the parser will restore the function after it is done parsing. 

A Note About Matrices
=====================

A special aspect about this particular parser is the way it interprets vectors
and matrices: 

JSON of the form:

    "[1, 2, 3, 4, 5]"

is returned as a (row) vector is Scilab, as one might expect. 

JSON of the form:

    "[[1, 2, 3], [4, 5, 6], [7, 8, 9]]"

is returned as a two-dimensional matrix in Scilab: 

    1.    2.    3.  
    4.    5.    6.  
    7.    8.    9.  

as one might expect, since the above JSON is fundamentally an example of a set
of arrays within an array. There is currently no support for hypermatrices. If
you need them, please add an [issue](http://forge.scilab.org/index.php/p/json/issues/create/)
and I'll consider adding support. 

Proceeding with the above convention, a Scilab column vector would be defined in
JSON thus: 

    "[[1], [2],  [3], [4]]"

which when parsed, returns this: 

    1.  
    2.  
    3.  
    4. 

Other Notes
===========

* The parser takes into consideration JSON backslash-escapes. Except for the
backslash-quote, all other backslash-escapes are left as is as they do not
affect Scilab strings. Backslash-quotes are taken into consideration during the
parsing process. 
* This version only has a parser. The next major version will include a JSON
encoder as well. Suggestions on this are welcome. 

            
Files (2)
[12.30 kB]
OS-independent binary for Scilab 6.0.x

[9.44 kB]
Source code archive

News (0)
Comments (0)
Leave a comment
You must register and log in before leaving a comment.
Login with GitLab
Email notifications
Send me email when this toolbox has changes, new files or a new release.
You must register and log in before setting up notifications.