scala中如何优雅的写json字符串
2023-09-11 14:16:24 时间
在实际工作中,需要在程序中直接组装json字符串,为了让程序易读,需要使用到scala中的多行文本及管道|
1. 相关知识点
scala中的字符串类就是java中的java.lang.String类,在Predef.scala中定义如下: type String = java.lang.String
scala同时为String提供了一个富封装类: scala.collection.immutable.StringOps、StringLike
scala可以将java.lang.String类自动转换为StringOps类。这样就可以非常方便地使用capitalize()、lines()、reverse()、stripMargin等方法相对较便捷的方法
在scala里,对于字符串的支持中最显著的一个特性是对于heredoc的支持,即对多行文本的支持。
在scala里创建多行字符串非常容易,只要将多行字符串放在三个双引号里就行。
scala会将三个双引号间的内容保持原样,在scala里称为原始字符串。比如可以在原始字符串里直接使用双引号或者反斜杠
如果不想使用缩进的话可以考虑使用RichString的stripMargin()方法,这个方法需要配合管道符号“|”使用。stripMargin()会去掉先导管道符“|”前所有的空白或控制字符,如果出现在其他地方,而不是每行的开始,就会保留管道符。
2. 代码示例
def main(args: Array[String]): Unit = {
test1();
}
def test1() = {
val typeRef = new TypeReference[java.util.Map[String,Object]](){}
var info ="""
[
{
"name":"张三",
"ange":29,
"addr":"广州天河区"
}
]
""".stripMargin
println(info)
println(JSON.parseObject(info,typeRef))
info ="""
|[
| {
| "name":"张三",
| "ange":29,
| "addr":"广州天\n\t河区 ||"
| }
|]
""".stripMargin
println(info)
println(JSON.parseObject(info,typeRef))
}
输出如下:
相关文章
- 实例解析java + jQuery + json工作过程(获取JSON数据)
- Scala的foldLeft和foldRight
- 在JavaScript中使用json.js:访问JSON编码的某个值
- 在JavaScript中使用json.js:使得js数组转为JSON编码
- Scala Actor并发编程入门示例
- scala集合同时支持不可变集合和可变集合
- Scala抽象属性的继承
- [FAQ] PHP Warning: json_encode(): double INF does not conform to the JSON spec
- 一个好用的json文件本地查看工具 - JSON viewer
- Android JSON解析json数据
- 【python】解决json.dump(字典)时报错Object of type ‘float32‘ is not JSON serializable
- 203_Spark Core:Scala单词计数
- 一天学完spark的Scala基础语法教程八、集合(idea版本)
- Scala隐式转换