0

argonaut个例子,在我们的一些项目中,当需要处理 JSON 时,人们会为此使用 argonaut,并对字段进行硬编码,例如:

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 回答