JSONlib

A JSON en- and decoder for SuperCollider

JSONlib

A JSON de- and encoder for SuperCollider

The JSON implementation of the SuperCollider standard library lacks certain features such as

  • [ ] a JSON encoder (the conversion of an dictionary to a JSON string)
  • [ ] parsing JSON values into their respective type (.parseJSON converts everything to a string)

which this Quark implements, building on top of the existing implementation.

There also exists a json Quark which also adds a wrapper for sccode.org but lacks a recursive encoding of objects. The goal of JSONlib is to simply provide a full implementation of the JSON standard in sclang and nothing beyond it.

Quickstart

Installation

```supercollider // install the quark Quarks.install("https://github.com/musikinformatik/JSONlib.git");

// restart the interpreter so the new classes are available thisProcess.recompile;

// open documention HelpBrowser.openHelpFor("Classes/JSONlib"); ```

Basic usage

Parse a JSON

Let's say we have a JSON with an integer as a value

json { "hello": 42 }

which we want to parse in sclang.

```supercollider // use Symbol instead of String to get rid of escaping quotation marks j = '{"hello": 42}';

// turn this into an Event d = JSONlib.convertToSC(j); // -> ( 'hello': 42 )

// an integer gets parsed as an integer d[\hello].class // -> Integer

// compare to the built-in method of sclang // it uses a Dictionary instead of an Event d = j.parseJSON() // -> Dictionary[ (hello -> 42) ]

// but 42 is a string here d["hello"].class // -> String ```

Encode an Event as JSON

```supercollider // create an event e = (\foo: "bar", \baz: (\nested: true));

e.asJSON // -> { "baz": { "nested": true }, "foo": "bar" }

// or use the class JSONlib JSONlib.convertToJSON(e); // -> { "baz": { "nested": true }, "foo": "bar" } ```

Advanced usage is described in the SCdoc documentation.

Development

Make sure to run the tests via

supercollider TestJSONlib.run;

License

GPL-2.0

Collection
Project
Source file
Extension
Superclass:
Dictionary
Project
Source file
Extension
Superclass:
JSONlib
Project
Source file
Extension
Superclass:
TestJSONlib
Project
Source file
Extension
Superclass:
UnitTest
v0.1.0
Date
2023-01-23
Git hash
b094a80258ee6da125eaf761df4e6d873b0037c1

Installation

Repository

URL

https://github.com/musikinformatik/JSONlib

Since

2023-01-07

Last update

2023-02-18

Current version

v0.1.0

Quark info

name

JSONlib

since

2023

author

Julian Rohrhuber, Dennis Scheiba

helpdoc

help

summary

A JSON en- and decoder for SuperCollider

version

0.1

isCompatible

a function

organisation

IMM Duesseldorf

Possible dependcies

Possible dependants