加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

比较Scala中的json平等

发布时间:2020-12-16 21:31:59 所属栏目:安全 来源:网络整理
导读:如果两个json结构在 scala中是一样的,我该怎么比较? 例如,如果我有: { resultCount: 1,results: [ { artistId: 331764459,collectionId: 780609005 } ]} 和 { results: [ { collectionId: 780609005,artistId: 331764459 } ],resultCount: 1} 它们应该被认
如果两个json结构在 scala中是一样的,我该怎么比较?

例如,如果我有:

{
  resultCount: 1,results: [
    {
      artistId: 331764459,collectionId: 780609005
    }
  ]
}

{
  results: [
    {
      collectionId: 780609005,artistId: 331764459
    }
  ],resultCount: 1
}

它们应该被认为是平等的

解决方法

你应该能够简单地做json1 == json2,如果json库被正确写入.这不是为你工作吗?

这是与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的相等语义来实现这一点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读