| md_src_plugins_yajl_README(3elektra) | Elektra | md_src_plugins_yajl_README(3elektra) |
NAME¶
md_src_plugins_yajl_README - Plugin: yajl
- infos = Information about YAJL plugin is in keys below
- infos/author = Markus Raab elektra@libelektra.org
- infos/licence = BSD
- infos/provides = storage/json
- infos/needs =
- infos/recommends = rebase directoryvalue comment type
- infos/placements = getstorage setstorage
- infos/status = maintained coverage unittest
- infos/description = JSON using YAJL
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.
Dependencies¶
- •
- libyajl-dev (version 1 and 2 should work)
Types¶
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-key
- string otherwise
Any other type/value will still be treated as string, but the warning #78 will be added because of the potential data loss.
Special values¶
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,..
Restrictions¶
- Only UTF-8 is supported. Use the 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.
- Everything is string if not tagged by metakey 'type' Only valid JSON types can be used in type, otherwise there are some fall backs to string but warnings are produced.
- Values in non-leaves are discarded.
- Arrays will be normalized (to #0, #1, ..)
- Comments of various JSON-dialects are discarded.
Because of these potential problems a type checker, comments filter and directory value filter are highly recommended.
Usage¶
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
Manually add a key-value pair to the database¶
printf '{ 'number': 1337 }' > kdb file /examples/yajl
Retrieve the new value¶
kdb get /examples/yajl/number #> 1337
Determine the data type of the value¶
kdb getmeta /examples/yajl/number type #> double
Add another key-value pair¶
kdb set /examples/yajl/key value #> Using name user/examples/yajl/key #> Create a new key user/examples/yajl/key with string 'value'
Retrieve the new value¶
kdb get /examples/yajl/key #> value
Check the format of the configuration file¶
kdb file user/examples/yajl/ | xargs cat #> { #> 'key': 'value', #> 'number': 1337 #> }
Undo modifications to the database¶
kdb rm -r /examples/yajl sudo kdb umount /examples/yajl ```
OpenICC Device Config¶
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
| Mon Jan 15 2018 | Version 0.8.20 |