Есть ли способ использовать Marshaller в Grails для разбора строки JSON в пользовательский объект - PullRequest
0 голосов
/ 16 февраля 2020

Я пытаюсь разобрать строку JSON в моем пользовательском объекте. У меня уже есть класс Marshaller для go от объекта до JSON, и мне было интересно, можно ли использовать его также для анализа в другом направлении вместо использования JsonSlurper не видел четкой документации по этому или любому другому JSON для API сопоставления объектов, которое не включает в себя написание кода с использованием JsonSlurper для ручного создания объектов

1 Ответ

1 голос
/ 17 февраля 2020

groovy поддерживает простое сопоставление следующим образом:

import groovy.json.JsonSlurper
import groovy.json.JsonOutput

class A{
    int id
    String name
}

Map m = new JsonSlurper().parseText('{"id":123,"name":"Joe"}')
A a = m as A
assert a.id==123
assert a.name=="Joe"

def json = JsonOutput.toJson(a)
assert json == '{"id":123,"name":"Joe"}'

для подхода маршалинга / демаршаллинга Я предпочитаю использовать библиотеку Gson:

@Grab(group='com.google.code.gson', module='gson', version='2.8.5')
import com.google.gson.Gson

class A{
    int id
    String name 
}

A a=new Gson().fromJson('{"id":123,"name":"Joe"}', A.class)
assert a.id==123
assert a.name=="Joe"

def json = new Gson().toJson(a)
assert json == '{"id":123,"name":"Joe"}'
...