0

たとえば、私argonautたちのプロジェクトのいくつかでは、JSON を処理する必要がある場合、人々はそのためにアルゴナウトを使用し、次のようにフィールドをハードコーディングします。

implicit def AddressCodecJson: CodecJson[Address] =
    casecodec3(Address.apply, Address.unapply)("street", "number", "post_code")

大きなケース クラスがある場合、リストは非常に長くなります。

implicit def AddressCodecJson: CodecJson[Address] =
    casecodec12(Address.apply, Address.unapply)("street", "number", "post_code", "...", "...", "...", "...", "...", "...", "...", "...", "...")

私の質問は、リフレクションによってフィールドを取得するのではなく、なぜそれらをハードコーディングする必要があるのですか?

技術的な問題はありますか? それとも、Scala ライブラリを設計するときにリフレクションを使用するのが嫌いなだけですか?

4

1 に答える 1

1

jsonを一般的に解析しようとしているかどうかはよくわかりません。任意の json を一般的に解析する必要があると想定しています。その場合は、ケース クラスごとに暗黙的な変換を作成する代わりに、 を使用json4sしてそれを行うことができます。その場合、クラスごとに暗黙の変換を提供する必要はありません。私たちはそれを私たちのプロジェクトで広く使用しています。タイプごとに暗黙のコンバーターを指定するだけで済みます (例: java.sql.timestamp、java.sql.Date、Joda-Time などを変換する方法)。

おそらく、このリンクが役立つかもしれません。

于 2015-07-13T05:45:07.167 に答える