【发布时间】: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