4.5

4.5 | 2 ratings Rate this file 32 Downloads (last 30 days) File Size: 3.21 KB File ID: #25713
image thumbnail

Highly portable JSON-input parser

by

 

02 Nov 2009 (Updated )

For any version of Matlab that may still be in use by the fileexchange community.

| Watch this File

File Information
Description

The JSON quickly gains popularity for a good reason. To paraphrase Christophe Delord (http://christophe.delord.free.fr/tpg/)
JSON is born from a simple statement:
A simple human-like meta-language will quickly
justify its use in such cases as data exchange over the web (e.g. Google translate), configuration files, etc.

See

http://sites.google.com/site/sim4stim/2clicks/a2t.html

 for an example of AUTOMATIC, PORTABLE & REUSABLE creation of GUI sets for Matlab.
(Note: p_json.m is at the core of this example too)

Hence it is worth the while to provide this novel facility to the widest possible audience of Matlab users.

Based on work from:

http://json-schema.org/
      &
http://www.mathworks.com/matlabcentral/fileexchange/ ::

 F.Glineur 23393-another-json-parser: Faster, Clearer & More robust than #20565
 J.Feenstra 20565-json-parser

This submission also provides a very simple (yet meaningful) use example (see also the screenshot).

Your test script (called a0t on the screenshot) may look like:

% ---------------------------------------------------------

fName = 'test02.jon';

fid = fopen(fName,'rt'); inString = fscanf(fid,'%c'); fclose(fid);

data = p_json(inString)

% ---------------------------------------------------------

and hence
 
inString == verbatim the 'test02.jon' TEXT input file,

provided in the .zip (see links below for more detail and more definitions):

% =========================================================
inString =

{
  "$schema":
  {"properties":{
    "name": {"type":"string"},
    "age" : {"type":"integer",
      "maximum":125,
      "optional":true}
   },
   "type" : "object"
  },
  "name" : "John Doe",
  "age" : 30
}

% =========================================================

*** See also:

Given the topical nature of the JSO notation we invite the user to take a look at places like:

http://en.wikipedia.org/wiki/JSON

http://json-schema.org/

http://json.org/

Acknowledgements

Json Parser and (Another) Json Parser inspired this file.

This file inspired Rubik1 and Jso Nlab: A Toolbox To Encode/Decode Json Files In Matlab/Octave.

MATLAB release MATLAB 5.2 (R10)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (3)
15 Jan 2012 Qianqian Fang

FYI, an optimized JSON parser, JSONlab, based on this work is available at

http://www.mathworks.com/matlabcentral/fileexchange/33381

It is 10x to 100x faster. A JSON encoder is also provided in JSONlab.

24 Aug 2010 Tanyer Alan  
12 Apr 2010 Dustin

I kinda wish there were a more straight-forward way of accessing structs that live inside an array. For example, in a JSON string that has a series of unkeyed objects living in an array (i.e., "arrayName": [ {"color": "red"}, {"color": "green"}, {"color": "blue"} ]), accessing those objects is odd. Instead of using arrayName(i).color you must use arrayName{1,i}.color. Not a huge deal, just different than what I was expecting.

Other than that, it is very particular about properly-formatted JSON string inputs, and that's a good thing. Nice job.

Updates
03 Nov 2009

Corrected typos & added the auto-GUI example & its link

Contact us