如何在Scala中比较两个json结构是否相同?
例如,如果我有:
{
resultCount: 1,
results: [
{
artistId: 331764459,
collectionId: 780609005
}
]
}
和
{
results: [
{
collectionId: 780609005,
artistId: 331764459
}
],
resultCount: 1
}
他们应该被认为是平等的
最佳答案
如果正确编写了json库,则您应该能够简单地执行json1 == json2
。那对你不起作用吗?
这与spray-json一起使用,尽管我希望每个json库都一样:
import spray.json._
import DefaultJsonProtocol._
Welcome to Scala version 2.10.4 (OpenJDK 64-Bit Server VM, Java 1.7.0_51).
Type in expressions to have them evaluated.
Type :help for more information.
scala> val json1 = """{ "a": 1, "b": [ { "c":2, "d":3 } ] }""".parseJson
json1: spray.json.JsValue = {"a":1,"b":[{"c":2,"d":3}]}
scala> val json2 = """{ "b": [ { "d":3, "c":2 } ], "a": 1 }""".parseJson
json2: spray.json.JsValue = {"b":[{"d":3,"c":2}],"a":1}
scala> json1 == json2
res1: Boolean = true
Spray-json使用一个不变的scala
Map
来表示由解析产生的抽象语法树中的JSON对象,因此,正是Map
的相等语义使这一工作得以实现。
关于json - 比较Scala中的json相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23176303/