2014-09-24 5 views
6

Ich habe unzählige Beispiele von JsonSlurper gesehen verwendet JSON Text zu analysieren und einen „JSON-Objekt“ aus ihm heraus zu erstellen:Verwenden von Groovys JsonSlurper für das tatsächliche POGO-Mapping?

def jsonObject = jsonSlurper.parseText(jsonText) 

Aber was, wenn der Text JSON einer meiner FizzBuzz Objekte repräsentieren? Kann ich JsonSlurper verwenden, um das JSON-Objekt einer Instanz zuzuordnen? Wenn das so ist, wie?

Antwort

8

Nach der Analyse von JSON mit JsonSlurper erhalten Sie eine Map. Wenn einen Map (siehe here) Konstruktor hat, sollte es funktionieren, wenn geparst Map an Konstruktor übergeben wird.

Siehe das folgende Beispiel:

import groovy.json.JsonSlurper 

def json = """{ "name": "John", "age": 127 }""" 
def parsed = new JsonSlurper().parseText(json) 

def person = parsed as Person 

assert person.age == 127 
assert person.name == 'John' 

class Person { 
    String name 
    int age  
} 
+0

Dank @Opal (+1) - zwei Followup Fragen: (1) meine 'FizzBuzz' Instanz keinen expliziten Konstruktor hat, so dass er auf dem Standard ctors abhängt, Groovy bietet; ** Bedeutet das, ich habe eine Karte ctor? ** Und (2) Was ist, wenn ich ein anderes Objekt habe, das ich 'JsonSlurper' zuordnen möchte, aber dieses Objekt (nennen wir es' Widget') hat ein paar explizit definierte Konstruktoren darauf ? ** In so einem Fall kann 'JsonSlurper' noch verwendet werden? ** Nochmals vielen Dank! – smeeb

+1

Wenn kein Konstruktor zur Verfügung gestellt wird Map-Konstruktor wird funktionieren. In der zweiten wird es nicht in allen Fällen funktionieren. – Opal

+1

Ok. So You müssen Sie einen leeren Konstruktor oder keinen Konstruktor zur Verfügung stellen, damit es funktioniert – Opal

Verwandte Themen