Scala【json字符串和json对象互相转换】
一.fastjson工具
pom依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
Json字符串<->对象
import com.alibaba.fastjson.JSON
import com.alibaba.fastjson.serializer.SerializeFilter
import java.util
import scala.beans.BeanProperty
/**
* @description: fastjson工具实现Json转换
* @author: HaoWu
* @create: 2020年09月07日
*/
object FastJsonDemo {
def main(args: Array[String]): Unit = {
//json对象中包含json数组
val jsonStr =
"""
|{
| "schoolName":"A",
| clazzs:[{"className":"1001"},{"className":"1002"},{"className":"1003"}]
|}
|""".stripMargin
/*************************** json字符串->对象 ***************************************/
val school = JSON.parseObject(jsonStr,classOf[School])
//取schoolName
val name = school.schoolName
println(name)
//Java的List转Scala的List , 注意:旧版过时,新版的Scala用这个:import scala.collection.JavaConverters._
import scala.collection.JavaConversions._
school.clazzs.asScala.foreach(x=>println(x.className))
/*************************** 对象->json字符串 ***************************************/
val schoolStr: String = JSON.toJSONString(school, null.asInstanceOf[Array[SerializeFilter]])
println(schoolStr)
}
}
//使用fastJson将对象转json字符串的时候必须加上@BeanProperty
//转JSON对象需要用java里面的List,导入java.util包
case class School(@BeanProperty schoolName:String,@BeanProperty clazzs:util.List[Clazz])
case class Clazz(@BeanProperty className:String)
打印结果
A
1001
1002
1003
{"clazzs":[{"className":"1001"},{"className":"1002"},{"className":"1003"}],"schoolName":"A"}
注意
1.从json文件读取的的字符串是如果有List,需要用java的list接收,导入java.util
包
2.如果需要将java的List转换成scala的List的需要导入scala.collection.JavaConversions._
包,进行隐式转换自动将java List转为scala List。
3.JSON对象转json的字符串需要JSON对象对应得实体类有get,set方法。通过@BeanProperty
注解实现。
二.Json4s工具
scala自带的Json解析工具,简单使用
Json字符串<->对象
import org.json4s.jackson.{JsonMethods, Serialization}
/**
* @description: 测试Json4S工具解析Json
* @author: HaoWu
* @create: 2020年09月11日
*/
object Json4STest {
def main(args: Array[String]): Unit = {
//数据格式:user:{"name": "zs","age": 10}
val json = "{\"name\": \"zs\",\"age\": 10}"
//导隐式函数
implicit val f = org.json4s.DefaultFormats
/** ************************* json字符串->对象 ***************************************/
val user: User = JsonMethods.parse(json).extract[User]
print(user)
/** ************************* 对象->json字符串 ***************************************/
val userJStr: String = Serialization.write(user)
println(userJStr)
}
}
case class User(name: String, age: Int)
Scala【json字符串和json对象互相转换】的更多相关文章
- Json对象与Json字符串的转化、JSON字符串与Java对象的转换
一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...
- Json对象与Json字符串的转化、JSON字符串与Java对象的转换(转)
一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...
- JSON字符串与java对象的转换
所需的jar包: 1.commons-lang.jar 2.commons-beanutils.jar 3.commons-collections.jar 4.commons-logging.jar ...
- JSON 字符串 与 java 对象的转换
jsonLib 经典文章:http://json-lib.sourceforge.net/xref-test/net/sf/json/TestJSONObject.html // 引入相应的包 //j ...
- JSON字符串与JS对象格式转换
JSON通常用于服务器向客户端传送数据,传回来的JSON数据是字符串的形式,所以要转变为JS对象形式才方便我们使用. JSON字符串转变为JS对象:JSON.parse( ); JS对象转变为JSON ...
- JSON字符串转为JSON对象
在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是对象,所以,JSON对象(js对象)和JSON字符串之间的相互转换是关键. JSON可以有两种格式,一种是对象格式的,另一种是数 ...
- JSON字符串和JS对象之间的转换
JSON字符串和JS对象之间的转换 1 json字符串转换为js对象 1.1 标准json格式字符串转换为Js对象 JSON字符串 str JSON.parse(str) eval(str) eva ...
- Gson解析json字符串、json数组转换成对象
实体类: public class Product { private int id; private String name; private String date; public int get ...
- JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串;JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象
JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串:JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象
- 转换成json字符串,与json字符串转换成java类型都要先转换成json对象
转换成json字符串,与json字符串转换成java类型都要先转换成json对象
随机推荐
- 字典树(Trie)
终于学会字典树了,真开心(然后就滚过来写总结了). 首先,字典树到底是个什么东西呢?请看下面这段话: 字典树,常被用来保存与查找大量的字符串,它利用了字符串之间的公共前缀来节约时间,但它的空间花费较大 ...
- 第06课 OpenGL 纹理映射
纹理映射: 在这一课里,我将教会你如何把纹理映射到立方体的六个面. 学习 texture map 纹理映射(贴图)有很多好处.比方说您想让一颗导弹飞过屏幕.根据前几课的知识,我们最可行的办法可能是很多 ...
- CSS学习笔记:定位属性position
目录 一.定位属性简介 二.各属性值的具体功能 1. relative 2. absolute 3. fixed 三.三种定位属性的效果总结 参考资料:https://www.bilibili.com ...
- Vue&Element开发框架中增加工作流处理,查看申请单中整合多个处理类型的处理
关于我在Winform框架.混合框架.Bootstrap开发框架中的简易审批性工作流模块,我写过不少文章,有兴趣可以参考<工作流模块>的随笔进行了解,本篇随笔在完成了Vue&Ele ...
- 单自由度系统中质量、阻尼和刚度变化对频率响应函数(FRF)影响图的绘制
作者:赵兵 日期:2020-02-17 目录 单自由度系统中质量.阻尼和刚度变化对频率响应函数(FRF)影响图的绘制 1. 背景 2. VISIO绘制 3. Matlab绘制 ...
- js事件常用操作、事件流
注册事件 给元素添加事件,称为注册事件或者绑定事件. 注册事件有两种方式:传统方式和方法监听注册方式 传统方式 on开头的事件,例如onclick <button onclick="a ...
- Integer.valueOf()和Integer.parseInt()区别
他们返回类型的不同是最大的原因. static int parseInt(String s) 将字符串参数作为有符号的十进制整数进行分析. static Integer valueOf(int i) ...
- [后端及服务器][WSL2(Ubuntu)+Docker]从零开始在WSL中安装Docker
目录 简介 WSL 安装 开启虚拟化(BIOS) 检查系统版本 安装WSL 老版本安装详情 简介 想花三篇文章写下从Windows(WSL)上开启Docker部署php/node/vue/html等项 ...
- Python 操作 Redis 发布订阅
Python 操作 Redis 发布订阅 介绍 Redis可以通过多个客户机订阅相同的频道,一个服务机在相应频道进行发布,从而实现在客户机收听服务机发布相应信息,可以利用这个机制实现多个客户机之间的信 ...
- GitHub出现Permission denied (publickey)
Permission denied (publickey) 没有权限的publickey 重新生成一次ssh key即可解决 ssh-keygen -t rsa -C "这里输入你的邮箱&q ...