我有一个如下所示的JSON字符串,
{ "name": "foo", "type": "mytype1" }
这是复杂JSON的一部分,我无法控制JSON。我正在尝试将其提取到case类中,这是不可能的,因为“ 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)
}))
}