【问题标题】:Scala and JavaScript's JSON.stringifyScala 和 JavaScript 的 JSON.stringify
【发布时间】:2015-08-15 11:22:49
【问题描述】:

当我在 Scala 中对对象进行字符串化时,生成的字符串与 JavaScript 在尝试解析字符串时所期望的字符串不匹配。

例如,当 Scala 的 JSON.stringify() 的值被添加到“new Cookie()”实例并且 cookie 被 JavaScript 读取时,Scala 对象可能如下所示。

"{\"id\":\"ABCD\"}"

然而,JavaScript 的 JSON.parse() 方法是预期的

{"id":"ABCD"}

问题是我试图将信息保存在 Scala 和 JavaScript 都可以访问和修改的 cookie 中。我想使用通用格式将信息放在 cookie 中。有没有办法在 Scala 中对 JSON 进行字符串化,以便它可以被 JavaScript 解析,反之亦然?我应该使用其他格式吗?

=================================

更新:

这是我在 Scala 中对 JSON 进行字符串化并将字符串放在 cookie 中的方法:

  var sTokenID:String = "ABCD"
  val nDaysExpire:Int = 2000
  val nSecondsExpire:Int = nDaysExpire * 24 * 60 * 60
  val jsonObject = Json.toJson(
    Map(
      "id" -> Json.toJson(sTokenID)
    )
  )
  val sValue:String = Json.stringify(jsonObject)
  val cookie:Cookie = new Cookie(_sCookieID, sValue, Option(nSecondsExpire), "/", scala.None, false, false)

【问题讨论】:

  • 这是关于在浏览器中运行的 Scala.js 编译的 Scala 代码吗?在这种情况下,您清楚地表明了这一点(使用 Scala.js 标记)。
  • 另外,请发布更多代码,您是如何调用JSON.stringify()JSON.parse()
  • 我更新了原始帖子以包含示例代码
  • 我找到了解决方法。在 JavaScript 中,我搜索双引号字符作为 cookie 值字符串中的第一个字符的出现。如果有,那么我假设 JSON 是在 Scala 中创建的,所以我解析 JSON 值两次。如果没有双引号,那么我假设 JSON 是用 JavaScript 创建的,我只需要解析一次 JSON 值。看起来我不需要做任何特别的事情来解析 Scala 中的 JSON 值。
  • 我遇到了类似的问题,我有一个 json 对象,它被转换为字符串,例如 {"id": "ABCD"}.toString 但是当我将它传递给记录器时,它被打印为“ {\"id\":\" ABCD\"}" 如何避免\

标签: javascript json scala playframework playframework-2.0


【解决方案1】:

jsonObject.toString() 应该可以解决问题。

【讨论】:

  • 我已经调查过了。当我输出该字符串时,它看起来很好 - 没有双引号以“/”开头。我认为问题在于,在设置“new Cookie()”的值到让“withCookies()”函数写入 cookie 之间,字符串值的转换实际上发生了,我只剩下一个值设置在最初不是我想要的 cookie。
猜你喜欢
  • 2011-08-26
  • 1970-01-01
  • 2021-04-16
  • 2016-09-16
  • 2014-01-13
  • 2021-05-28
  • 1970-01-01
  • 1970-01-01
  • 2018-02-23
相关资源
最近更新 更多