Elektra
0.8.20
|
This is a plugin reading and writing JSON files using the library yail
The plugin was tested with yajl version 1.0.8-1 from Debian 6 and yajl version 2.0.4-2 from Debian 7.
Examples of files which are used for testing can be found below the folder in "src/plugins/yajl/yajl".
The JSON grammar can be found here.
A validator can be found here.
Supports every KeySet except when arrays are intermixed with other keys. Has only limited support for metadata.
libyajl-dev
(version 1 and 2 should work)The type of the data is available via the metadata type
:
string
: The JSON string type.boolean
: The JSON boolean type (true or false)double
: For JSON numbers.If no metadata type
is given, the type is either:
null
on binary null-keystring
otherwiseAny other type/value will still be treated as string, but the warning #78
will be added because of the potential data loss.
In JSON it is possible to have empty arrays and objects. In Elektra this is mapped using the special names
###empty_array
and
___empty_map
Arrays are mapped to Elektra’s array convention #0, #1,..
iconv
plugin if your locale are not UTF-8. When using non-UTF-8 the plugin will be able to write the file, but cannot parse it back again. You will error #77, invalid bytes in UTF8 string.Because of these potential problems a type checker, comments filter and directory value filter are highly recommended.
The following example shows you how you can read and write data using this plugin.
`` <h1>Mount the plugin to the cascading namespace
/examples/yajl` sudo kdb mount config.json /examples/yajl yajl
printf '{ "number": 1337 }' > kdb file /examples/yajl
kdb get /examples/yajl/number #> 1337
kdb getmeta /examples/yajl/number type #> double
kdb set /examples/yajl/key value #> Using name user/examples/yajl/key #> Create a new key user/examples/yajl/key with string "value"
kdb get /examples/yajl/key #> value
kdb file user/examples/yajl/ | xargs cat #> { #> "key": "value", #> "number": 1337 #> }
kdb rm -r /examples/yajl sudo kdb umount /examples/yajl ```
This plugin was specifically designed and tested for the OpenICC_device_config_DB
although it is of course not limited to it.
Mount the plugin:
kdb mount --resolver=resolver_fm_xhp_x color/settings/openicc-devices.json /org/freedesktop/openicc yajl rename cut=org/freedesktop/openicc
or:
kdb mount-openicc
Then you can copy the OpenICC_device_config_DB.json to systemwide or user config, e.g.
cp src/plugins/yajl/examples/OpenICC_device_config_DB.json /etc/xdg cp src/plugins/yajl/examples/OpenICC_device_config_DB.json ~/.config kdb ls system/org/freedesktop/openicc
prints out then all device entries available in the config
kdb get system/org/freedesktop/openicc/device/camera/0/EXIF_manufacturer
prints out "Glasshuette" with the example config in source
You can export the whole system openicc config to ini with:
kdb export system/org/freedesktop/openicc simpleini > dump.ini
or import it:
kdb import system/org/freedesktop/openicc ini < dump.ini