JavaScript Object Notation, or JSON for short, is a lightweight computer data interchange format.
Serializing Lua objects to JSON and storing the objects as files in a file system is a simple and convenient method for storing basic information such as configuration data. Using JSON as a "mini-database" may be of particular interest to firmware developers as a device may not have enough memory to run a database such as SQLite.
Serializing objects using Lua is very easy. Any Lua object can be converted to JSON by calling ba.json.encode(object), where object is a Lua table.
Example:
local myconf={
ipaddr="192.168.1.10",
mask="255.255.255.0",
defaultgw="192.168.1.1",
adminpassword="qwerty",
maxusers=10
}
local fp = ba.openio("vm"):open("myconf.json", "w")
if fp then
fp:write(ba.json.encode(myconf))
fp:close()
end
In the above example, a Lua table is created with some configuration parameters. The table is converted to JSON and saved as "myconf.json". The saved configuration data can be restored as follows:
local myconf
local fp = ba.openio("vm"):open("myconf.json", "r")
if fp then
myconf=ba.json.decode(fp:read("*a"))
fp:close()
end
Function ba.json.decode is internally using the JSON Parser Class. The JSON Parser has many uses besides being used for parsing saved configuration data. See the JSON C implementation for more information.