JSON


Wstęp

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.

Przykłady

Konwersja obiekt Javy/Groovy -> JSON

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
    }
}

Konwersja obiekt JSON -> Javy/Groovy

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]>

Zastosowanie

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:

API

http://jpalio.torn.com.pl/modules/palio/modules/JSON.html