我有一个如下所示的 JSON 字符串,
{ "name": "foo", "type": "mytype1" }
这是复杂 JSON 的一部分,我无法控制 JSON。我正在尝试将其提取到案例类中,这是不可能的,因为“type”是保留关键字。
在 C# 中,我会执行以下操作,
[JsonProperty(Name = "blah")]
public string SomethingElse { get; set; }
json4s 中是否有等效的构造?
最佳答案
请注意,您可以通过将保留关键字括在反引号中来使用它们:
case class Foo(name: String, `type`: String)
val x: Foo = ???
println(x.`type`)
访问 type
成员有点麻烦,所以如果您希望使用以下内容:
case class Foo(name: String, typ: String)
您可以像这样定义自定义序列化器:
object Foo {
val jsonSerializer = new CustomSerializer[Foo](format => ({
case JObject(JField("name", JString(name)) :: JField("type", JString(typ)) :: Nil) => Foo(name = name, typ = typ)
},
{
case foo: Foo => JObject(JField("name", JString(foo.name)) :: JField("type", JString(foo.typ)) :: Nil)
}))
}
关于scala - 包含保留关键字的 JSON 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58824327/