scala lift json:未知数据的模式匹配?

发布于 2024-11-06 15:46:59 字数 379 浏览 6 评论 0原文

我有一些奇怪的 json,我无法更改,我希望使用它来解析它 电梯中的 JsonParsen。

一个典型的 json 是这样的:

 {"名称":"xxx", "数据":{
        "data_123456":{"id":"你好"},
        "data_789901":{"id":"你好"},
        "data_987654":{"id":"你好"},  
}}

问题是数据的键未知(data_xxxxx,其中 xx:s 不知道)。 这是糟糕的 json,但我必须忍受它。

我应该如何在 scala 中设置案例类才能构建正确的 当这里的键未知但结构已知时的结构?

I have some strange json that I cannot change, and I wish to parse it using
the JsonParsen in lift.

A typical json is like:

    {"name":"xxx",  "data":{
        "data_123456":{"id":"Hello"},
        "data_789901":{"id":"Hello"},
        "data_987654":{"id":"Hello"},  
}}

The issue is that the keys for the data are unknown (data_xxxxx, where the xx:s
are not known).
This is bad json, but I have to live with it.

How am I supposed to setup case-classes in scala to be able to build a proper
structure when the keys here are unknown, but the structure is known?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鸠书 2024-11-13 15:46:59

您可以使用 Map,每个值也可以是 JValue,表示未解析的 JSON。示例:

case class Id(id: String)
case class Data(name: JValue, data: Map[String, Id])

然后:

json.extract[Data]
res0: Data(JString(xxx),Map(data_123456 -> Id(Hello), data_789901 -> Id(Hello), data_987654 -> Id(Hello)))

You can use a Map, and every value can be JValue too, representing unparsed JSON. Example:

case class Id(id: String)
case class Data(name: JValue, data: Map[String, Id])

And then:

json.extract[Data]
res0: Data(JString(xxx),Map(data_123456 -> Id(Hello), data_789901 -> Id(Hello), data_987654 -> Id(Hello)))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文