将JSON数据解析为Scala列表和HashMap

问题描述:

我有如下所示的JSON数据。我正在使用Python将列表,字典和另一个列表编码为JSON。最终的JSON数据看起来就像这样:将JSON数据解析为Scala列表和HashMap

{ "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解析器)。

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

例如。

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

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

+0

我正在使用Python的'json.dump(list,outfile)',并且使用'json.loads(json.dumps(lst))'测试了它。不知道我是否正确地检查它。是的,结构将如图所示。 –

+1

我不熟悉Python如何解析json,但是如果你在任何在线的json解析器中输入“[1,1,1] {”0“:[1,2,3]} [9,8,7]” ,他们认为它是畸形的。 – Ren

+0

对不起,我把数据解析成json出错了,但现在已经修复了。你可以看看我编辑的问题。 –