description |
---|
JSON all things! |
BoxLang supports native JSON support via several key functions and some member functions.
BoxLang gives us the jsonSerialize()
function to convert any piece of data to its JSON representation (https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/conversion/jsonserialize)
jsonSerialize(
var
[, serializeQueryByColumns = false ]
[, useSecureJSONPrefix = false ]
[, useCustomSerializer = false ]
)
Pass in any complex or simple variable to the var
argument and JSON will be produced:
person = { name = "Luis Majano", company = "Ortus Solutions", year = 2006};
writeOutput( jsonSerialize( person ) );
You can even use the toJSON()
member function:
person = { name = "Luis Majano", company = "Ortus Solutions", year = 2006};
writeOutput( person.toJSON() );
By default BoxLang will keep the keys in a struct in their original casing in the resulting JSON document:
person = { name = "Luis Majano", company = "Ortus Solutions", year = 2006};
writeOutput( jsonSerialize( person ) );
// Will become
{ "name" : "Luis Majano", "company" : "Ortus Solutions", "year" : 2006 }
The inverse of serialization is deserialization (https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/conversion/jsondeserialize). BoxLang gives you the jsonDeserialize()
function that will take a JSON document and produce native BoxLang data structures for you.
jsonDeserialize(
json
[, strictMapping = true ]
[, useCustomSerializer = false ]
)
Just pass a JSON document, and off we go with native structs/arrays/dates/strings and booleans.
if( isJson( mydata ) ){
return jsonDeserialize( data );
}
person = jsonDeserialize( '{"company":"Ortus","name":"Mr OrtusMan"}' );
writeOutput( person.company );
This function can also be used as a member function in any string literal:
var deserializedData = myjsonString.jsonDeserialize();
var data = '[]'.jsonDeserialize();
BoxLang has a function to test if the incoming string is valid JSON (https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/decision/isjson) or not: isJSON()
isJSON( "[ 1, 2, 3 ]" )