强制执行JSON结果的顺序

时间:2013-06-27 17:02:52

标签: scala

我从json导入了非常大的结果集。 json中的每一行数据都返回一个非常具体的“列”顺序,我想快速迭代。我宁愿避免检查/匹配密钥来处理每个数据的开销。不幸的是,scala.util.parsing.json将这些列放入Map对象中,当迭代Map时,它迭代的顺序是随机的,并不一定反映JSON结果中列的顺序。有没有办法让解析器强制执行JSON列的顺序?一种想法是,如果有一种方法可以告诉解析器在生成对象时使用LinkedHashMap或ListMap。这可以通过扩展课程或添加其他特征来实现吗?我有其他选择吗?

2 个答案:

答案 0 :(得分:2)

我强烈建议您不要依赖键/值对的顺序。 JSON对象为defined

  

对象是一组无序的名称/值对。

依赖订单很可能会导致代码难以解决和不兼容。交易速度的正确性总是很糟糕。

相反,我建议找一个快速,正确的解析器。我之前使用过Jackson,这非常快,可以很好地与Scala一起使用。你annotate任意一类,杰克逊将JSON解析为该类的实例。然后,您可以将这些实例作为本机Java / Scala对象进行处理,这些对象既快速又健壮。

答案 1 :(得分:1)

我会考虑尝试类似json4s的东西。

似乎JObject类型已经排序了字段。

https://github.com/json4s/json4s

否则我会问你为什么需要它们? 您始终可以按键映射。