Changes

Undo revision 12701 by Lostboy529 (talk)
Line 57: Line 57:  
* Did you select a task from our list of proposals and ideas?
 
* Did you select a task from our list of proposals and ideas?
 
** If yes, what task did you choose? Please describe what part of it you especially want to focus on if you can already provide this information. ''Please also wiki-link the page for your elaborated proposal here.''
 
** If yes, what task did you choose? Please describe what part of it you especially want to focus on if you can already provide this information. ''Please also wiki-link the page for your elaborated proposal here.''
=== JSON encoding/decoding ===
  −
  −
[https://en.wikipedia.org/wiki/JSON JavaScript Object Notation], in short JSON, is a very common human readable and structured data format.  Unfortunately, GNU Octave still lacks of builtin support of that data format.  Having JSON support, Octave can improve for example it's web service functions, which often exchange JSON data these days.  Another interesting applicatoin is described in another Octave GSoC project, see [[Summer of Code - Getting Started#Jupyter_Integration | Jupyter integration]].
  −
  −
In bug {{bug|53100}} a vivid discussion about proper JSON support took place.  As JSON is a highly demanded feature for Octave, there are already several attempts to fill the gap:
  −
  −
* [https://github.com/fangq/jsonlab jsonlab] (M-file implementation, probably slow for large JSON files)
  −
* [https://www.artefact.tk/software/matlab/jsonio/ JSONio] (C MEX wrapper around [https://github.com/zserge/jsmn jsmn])
  −
* [https://github.com/Andy1978/octave-rapidjson octave-rapidjson] (C++ Octave wrapper around [https://rapidjson.org/ rapidjson])
  −
* [https://github.com/apjanke/octave-jsonstuff octave-jsonstuff] (C++ Octave wrapper around [https://github.com/open-source-parsers/jsoncpp jsoncpp])
  −
  −
For different reasons, none of them can be directly merged into Octave core yet.  Thus there is still lots of work to do.  The goal of this project is to evaluate (and to cherry pick from) the implementations above, to create Matlab compatible [https://www.mathworks.com/help/matlab/ref/jsonencode.html jsonencode] and [https://www.mathworks.com/help/matlab/ref/jsondecode.html jsondecode] functions.  This involves proper documentation of the work and unit tests to ensure the correctness of the implementation.
  −
  −
* '''Minimum requirements'''
  −
: Good Octave and C/C++ programming knowledge.  Ability to make use of C/C++ libraries.
  −
* '''Difficulty'''
  −
: Medium.
  −
* '''Mentor'''
  −
: [[User:Siko1056|Kai T. Ohlhus]]
  −
  −
   
* Please provide a rough estimated timeline for your work on the task. ''This should include the GSoC midterms and personal commitments like exams or vacation ("non-coding time"). If possible, include two or three milestones you expect.''
 
* Please provide a rough estimated timeline for your work on the task. ''This should include the GSoC midterms and personal commitments like exams or vacation ("non-coding time"). If possible, include two or three milestones you expect.''
 
[[Category: Summer of Code]]
 
[[Category: Summer of Code]]
9

edits