1. ホーム
  2. groovy

JSONを処理するGroovy

2022-02-07 13:22:55
<パス

GroovyにはJSONを変換する機能があり、関連するクラスは groovy.json パッケージで提供されます。この記事の参照元は Groovyドキュメント JSONの解析と生成 .

まず、2つの簡単なクラスを定義します。

class Person {
    int id
    String name
    List<Book> books

    @Override
    String toString() {
        "Book(id;$id,name:$name,books:${books})"
    }
}

class Book {
    int id
    String name

    @Override
    String toString() {
        "Book(id:$id,name:$name)"
    }
}

JsonOutput

JsonOutputクラスはGroovyオブジェクトをJSON文字列に変換するために使用されます。JsonOutputは非常に強力で、様々な基本型、配列、リスト、Map、カスタムオブジェクトなどを変換することができます。変換結果を再度呼び出すには prettyPrint メソッドを実行すると、フォーマットされた出力も得られるので、とても便利です。

    static void parseSimpleObject() {
        def book = new Book(id: 1, name: 'Thinking in Java')
        def jsonOutput = new JsonOutput()
        def result = jsonOutput.toJson(book)
        println(result)

        //formatting the output
        println(jsonOutput.prettyPrint(result))
    }

//result
{
"id":1,"name":"Thinking in Java"}
{
    "id": 1,
    "name": "Thinking in Java"
}

JsonSlurper

JsonSlurperはJsonOutputの逆で、GroovyオブジェクトをJson文字列に変換するために使用されます。ファイルや配列、バイトストリームなど様々な場所からオブジェクトを変換するために、多くのパース・メソッドを提供しています。ここでは、parseTextメソッドを呼び出して、文字列からオブジェクトを変換しています。変換の結果はMapであることに注意してください。もちろん、オブジェクトが単純であれば、GroovyのMapデストラクチャリングを使って、Mapから実際のオブジェクトを作成することができます。

    static void parseSimpleJson() {
        def text = '{"id":1,"name":"Thinking in Java"}'
        def jsonSlurper = new JsonSlurper()

        // get the Map object
        def map = jsonSlurper.parseText(text)
        println(map)
        //convert Map to actual object
        def obj = new Book(map)
        println(obj)
    }

JsonSlurperを使用する場合、配列はArrayListオブジェクトに、オブジェクトはMapオブジェクトに変換されることに注意してください。複雑なオブジェクト処理を行う場合は、これらの戻り値に注意してください。

詳しくは、この記事の冒頭に直接あるドキュメントのリンクをチェックしてください。