我有從json導入的非常大的結果集。 json中的每一行數據都會返回一個非常特定的「列」順序,我希望快速迭代。我寧願避免檢查/匹配鍵的開銷來處理每一塊數據。不幸的是,scala.util.parsing.json將這些列放入一個Map對象中,當遍歷Map時,它迭代的順序是隨機的,並且不一定反映JSON結果中列的順序。有沒有辦法讓解析器執行JSON列的順序?一個想法是,如果有方法告訴解析器使用LinkedHashMap或ListMap,因爲它正在生成對象。這可以通過擴展課程或添加其他特徵來實現嗎?我有其他選擇嗎?強制執行JSON結果的順序
回答
我會考慮嘗試類似json4s的東西。
看來JObject類型已經排序了字段。
https://github.com/json4s/json4s
否則我會問,爲什麼你需要他們定購? 您可以隨時使用map.get按鍵。
json4s看起來像它可能是有希望的,但我需要找到一種方法來強制所有字段被解析爲字符串(例如長字符串的數字不會被解析爲雙) –
我使用的是光滑的DB框架,並且將這些價值觀傾倒在準備好的聲明中。填充預準備語句使用數字索引來處理每個變量映射。鑑於我可以爲每個鍵名創建一個查找表給它各自的索引,但我寧願不處理維護這樣一個表的開銷,以及在每個結果行上執行該操作的處理能力。 –
字符串字段包含在json中的雙引號中。 json4s會給你正確的類型。 – JasonG
我強烈建議您不要依賴鍵/值對的順序。 JSON對象爲defined,如下所示:
對象是無序的一組名稱/值對。
依靠訂單很可能會引入難以解決的錯誤和代碼不兼容。交易對速度的正確性總是一件壞事。
相反,我會建議找到一個快速,正確的解析器。我以前使用過Jackson,這非常快,可以很好地與Scala一起使用。你annotate你的任意類和傑克遜解析JSON到類的實例。然後,您可以將這些實例作爲本機Java/Scala對象來處理,這些對象都非常快速並且非常健壯。
Jackson是一個基於Java的庫。有一個名叫Jerkson的包裝紙,被玩家使用!框架一段時間。儘管其他圖書館越來越受歡迎,但該項目已被放棄。 Json4s可以得到傑克遜的支持,所以我建議在scala中使用它。 – JasonG
jackson還有一個scala模塊,它可以使java庫與scala對象一起工作 - > https://github.com/FasterXML/jackson-module-scala –
- 1. EF4 - 強制執行順序
- 2. 如何強制javascript執行順序
- 3. 存儲過程 - 強制執行順序
- 4. 強制執行順序 - Swift3/Xcode8 - 線程
- 5. 如何強制observables按順序執行?
- 6. JSON結果和GET POST的執行順序
- 7. jQuery:強制執行document.ready()調用的執行順序
- 8. mysql強制結果的順序與IN子句的順序匹配
- 9. PostgreSQL:強制執行表中的行順序
- 10. 的MongoDB:強制插入的順序執行和更新
- 11. 如何在Android 2.x中強制串行/順序執行AsyncTasks
- 12. 強制執行的順序廚師食譜
- 13. 強制執行jQuery UI轉換的順序
- 14. D3JS強制佈局開始的執行順序,請勾選
- 15. 強制執行表排序
- 16. 如何使用GCC編譯器強制執行結構位順序?
- 17. ActiveRecord created_at並強制執行順序一致性
- 18. 強制量角器腳本語句按順序執行
- 19. 強制Popen進程在python中以某種順序執行
- 20. 如何強制js代碼以寫入順序執行?
- 21. 如何強制javascript函數同步/順序執行?
- 22. 使用內存屏障強制順序執行
- 23. 不能強制在C++中順序執行線程?僵局?
- 24. 強制執行空JSON模式
- 25. 強制執行
- 26. 強制執行
- 27. 強制執行
- 28. tkinter順序執行順序
- 29. 順序執行
- 30. 執行順序
如果您的問題中包含「寧願避免開銷」一詞,您可能希望避免使用'scala.util.parsing.json'。 –