jsonwidget and JsonData

jsonwidget

jsonwidget is a general-purpose JSON validation and manipulation library. It provides an ad hoc, just barely good enough user interface for manipulating a complicated JSON structure, and provides scaffolding to build that interface.

There are two implementations so far:

  • jsonwidget-javascript - a client-side JavaScript library that generates a basic HTML form interface in a Web browser.
  • jsonwidget-python - a terminal window implementation suitable for editing forms via ssh or in a local terminal window.
  • Application designers using one of these libraries have the option of providing a schema, limiting the input to a subset of valid JSON compatible with whatever application is actually consuming the JSON, or using a provided permissive schema that allows any valid JSON. The libraries are capable of dynamically generating a form is using nothing more than a schema and a JSON file as input.

    A more complete description of jsonwidget can be found in this 2010 blog post: "Easy form building for terminal windows: jsonwidget-python". Though the 2010 blog post is more focused on the Python library/application, it covers the Javascript implementation as well

    jsonwidget source code

    JsonData extension for MediaWiki

    The original purpose of jsonwidget was as a Javascript library to make collaboration on JSON files possible with MediaWiki. In 2011, the JsonData extension for MediaWiki was created. Some of the schema handling code was ported from Javascript to PHP, and the extension was deployed on jsonwidget.org in 2012 (back when jsonwidget.org ran on MediaWiki).

    The original author of JsonData (Rob Lanphier) ended substantial work on JsonData in 2012, but the extension was imported into the central MediaWiki source repository in 2013, and the JsonSchema component was imported into MediaWiki core.

    JsonData source code

    As of this writing in December 2019, this extension hasn't been tested by the original author since 2012.


    Copyright 2005 - 2019 - Rob Lanphier - robla.net