将JSON数据解析为Scala List和HashMap

时间:2016-06-07 03:41:22

标签: json scala parsing

我有如下所示的JSON数据。我使用Python将列表,字典和另一个列表编码为JSON。最终的JSON数据如下所示:

{ "0": [3, 3, 3], "1": { "0": [0, 8, 9], "1": [1, 2, 3, 4, 10, 11], "2": [4] }, "2": [1, 1, 1, 1] }

我的目标是编写某种类型的Scala函数,以允许以下方式提取JSON数据:

"0": [3, 3, 3]成为List(3,3,3)

{"0":[0,8,9], ...}成为HashMap[Int,List[Int]]

"2": [1, 1, 1, 1]成为List(1,1,1,1)

请注意原始Python列表和字典的长度会有所不同,"0", "1", "2"将始终以此顺序表示列表,字典和列表。

我对Scala很陌生,并且在不使用外部库的情况下如何做到这一点很困难。我正在尝试使用spray-json来实现它,因为我使用的是更新版本的Scala(没有内置的json解析器)。

1 个答案:

答案 0 :(得分:0)

对我来说,这看起来不像是有效的JSON,这意味着您可以使用的任何JSON解析器都不起作用。那个结构固定了吗?您可能希望将其转换为有效JSON的内容。

例如。

{
  "list" : [ 1,1,1],
   "someotherObject" : {
         "0" : [1,2,3]
   },
   "anotherList" : [9,8,7]
}

然后你可以使用Argonaut(例如),并定义一个解码器,它告诉你如何将JSON映射到你指定的对象类型。见http://argonaut.io/doc/codec/