Moduł udostępnia metody ułatwiające konwersje obieków Javy/Groovy do/z formatu JSON. Moduł stworzony jest w oparciu o bibliotekę JSON-lib (http://json-lib.sourceforge.net). Więcej informacji o JSON można znaleźć na stronie http://www.json.org.
Poniższy przykład pokazuje jak można w prosty sposób przekonwertować obiekt Groovy do Stringa w postaci JSON:
import palio.*
import palio.modules.*
class ObjectToJsonStringExample {
String foo = "foo value"
Long bar = 11
Date someDate = new Date()
Map someMap = ["abra": "kadabra", someNumber: 22]
List someCollection = ["lorem ipsum", 33.44]
static void main() {
ObjectToJsonStringExample object = new ObjectToJsonStringExample()
String jsonString = Groovy.module("json").toJSON(object)
println "## jsonString: ${jsonString}"
}
static void run() {
main()
}
}
Wykonanie tego obiektu zwróci następującą zawartość:
## jsonString: {
"bar": 11,
"foo": "foo value",
"someCollection": [
"lorem ipsum",
33.44
],
"someDate": {
"date": 30,
"day": 2,
"hours": 17,
"minutes": 14,
"month": 10,
"seconds": 38,
"time": 1291133678236,
"timezoneOffset": -60,
"year": 110
},
"someMap": {
"abra": "kadabra",
"someNumber": 22
}
}
Poniższy przykład pokazuje jak odzyskać dane z JSONa do obiektu Groovy:
import palio.*
import palio.modules.*
class JsonStringToObjectExample {
String foo
Long bar
Date someDate
Map someMap
List someCollection
static void main() {
String jsonString = """
{
\"bar\": 11,
\"foo\": \"foo value\",
\"someCollection\": [
\"lorem ipsum\",
33.44
],
\"someDate\": {
\"date\": 30,
\"day\": 2,
\"hours\": 17,
\"minutes\": 25,
\"month\": 10,
\"seconds\": 28,
\"time\": 1291134328750,
\"timezoneOffset\": -60,
\"year\": 110
},
\"someMap\": {
\"abra\": \"kadabra\",
\"someNumber\": 22
}
}
"""
JsonStringToObjectExample object = Groovy.module("json").fromJSON(
jsonString,
JsonStringToObjectExample.class,
null
)
println "## object reconstructed from JSON String: ${object.dump()}"
}
static void run() {
main()
}
}
Wykonanie tego przykładu zwróci:
## object reconstructed from JSON String: <JsonStringToObjectExample@da287 foo=foo value bar=11 someDate=Tue Nov 30 17:25:28 CET 2010 someMap=[someNumber:22, abra:kadabra] someCollection=[lorem ipsum, 33.44]>
Użytecznym przykładem zastosowania JSONa wszędzie tam gdzie mamy styk technologi Java - JavaScript. Dobrym przykładem jest wykorzystanie go jako nośnik danych które są przesyłane w AJAXie. Typowy scenariusz tego typu wygląda następująco: