由于我的代码中的一个错误,我最终使用.toString
序列化复杂的Map[String, AnyRef]
对象,而我实际上打算的是 JSON 序列化。现在我有字符串表示任意嵌套级别的映射。
我的目标是将这些表示转换为JSON,而不会丢失任何信息或丢失尽可能少的信息。
我应该遵循什么方法来完成此操作?
这实际上取决于您在这些String
中拥有的内容。 问题是.toString
本身会丢失一些信息:
@ Map("test" -> 1).toString
res1: String = "Map(test -> 1)"
@ Map("debug -> 2, test" -> 1).toString
res2: String = "Map(debug -> 2, test -> 1)"
@ Map("debug" -> 2, "test" -> 1).toString
res3: String = "Map(debug -> 2, test -> 1)"
你如何确定你有res2
或res3
的案例?一般来说,如果您用作键的这些String
中的任何一个包含,
您将遇到一些问题,因为存在歧义或语法错误(如果您尝试解析内容(。
但是,如果您没有这些,则可以:
- 使用
.substring
删除初始Map(
和最终)
* 使用","作为分隔符.split
结果 .map
结果从值.split
键,trim
双方- 那么唯一的问题是解析值(
AnyRef
不是很具体(。
或者:
- 打开崇高文本(或任何其他支持多行版本的编辑器(
- 将您的代码粘贴到那里
- 选择
->
并将其用于整个文件中的多行选择 - 使用 Ctrl+箭头在键周围添加
"
以使其可解析String
- 如果需要,使用相同的方法来调整
AnyRef
- 将代码复制回 Scala 并评估