2016-06-07 70 views
0

我有如下所示的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解析器)。

回答

0

這對我來說看起來不像是有效的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出錯了,但現在已經修復了。你可以看看我編輯的問題。 –