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对象
随机推荐
- hdu 5170 GTY's math problem(水,,数学,,)
题意: 给a,b,c,d. 比较a^b和c^d的大小 思路: 比较log(a^b)和log(c^d)的大小 代码: int a,b,c,d; int main(){ while(scanf(" ...
- cf 11B Jumping Jack(贪心,数学证明一下,,)
题意: 给一个数X. 起始点为坐标0.第1步跳1格,第2步跳2格,第3步跳3格,.....以此类推. 每次可以向左跳或向右跳. 问最少跳几步可以到坐标X. 思路: 假设X是正数. 最快逼近X的方法是不 ...
- C#写TXT文档
//C#写TXT文档 String strDir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAs ...
- (转)刚来的大神彻底干掉了代码中的if else...
一旦代码中 if-else 过多,就会大大的影响其可读性和可维护性. 首先可读性,不言而喻,过多的 if-else 代码和嵌套,会使阅读代码的人很难理解到底是什么意思.尤其是那些没有注释的代码. 其次 ...
- Spark记录(一):Spark全景概述
一.Spark是什么 Spark是一个开源的大数据处理引擎. 二.Spark的主要组件如下图所示: 三.Spark运行时架构 Spark共有三种运行模式:本地模式.集群模式.客户端模式. 生产环境基 ...
- 【数据结构&算法】11-树基础&二叉树遍历
目录 前言 树的定义 树的存储结构 双亲表示法 孩子表示法 孩子兄弟表示法 二叉树 定义 特点 形态 特殊二叉树 斜树 满二叉树 完全二叉树 二叉树的性质 二叉树的存储结构 二叉树的顺序存储结构 二叉 ...
- Go语言核心36讲(Go语言实战与应用四)--学习笔记
26 | sync.Mutex与sync.RWMutex 从本篇文章开始,我们将一起探讨 Go 语言自带标准库中一些比较核心的代码包.这会涉及这些代码包的标准用法.使用禁忌.背后原理以及周边的知识. ...
- 问题 B: 比大小
题目描述 给你两个很大的数,你能不能判断出他们两个数的大小呢? 比如123456789123456789要大于-123456 输入 每组测试数据占一行,输入两个不超过1000位的10进制整数a,b 数 ...
- scrapy获取当当网多页的获取
结合上节,网多页的获取只需要修改 dang.py import scrapy from scrapy_dangdang.items import ScrapyDangdang095Item class ...
- led汇编点灯
1. 汇编LED原理 为什么使用Cortex-A汇编 使用汇编初始化soc外设 使用汇编初始化DDR,I.MX不需要,因为它内部的96k ROM中存放了自己编写的启动代码,这些代码可以读取DDR配置信 ...