我有从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'。 –