一.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对象互相转换】的更多相关文章

  1. Json对象与Json字符串的转化、JSON字符串与Java对象的转换

    一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...

  2. Json对象与Json字符串的转化、JSON字符串与Java对象的转换(转)

    一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...

  3. JSON字符串与java对象的转换

    所需的jar包: 1.commons-lang.jar 2.commons-beanutils.jar 3.commons-collections.jar 4.commons-logging.jar ...

  4. JSON 字符串 与 java 对象的转换

    jsonLib 经典文章:http://json-lib.sourceforge.net/xref-test/net/sf/json/TestJSONObject.html // 引入相应的包 //j ...

  5. JSON字符串与JS对象格式转换

    JSON通常用于服务器向客户端传送数据,传回来的JSON数据是字符串的形式,所以要转变为JS对象形式才方便我们使用. JSON字符串转变为JS对象:JSON.parse( ); JS对象转变为JSON ...

  6. JSON字符串转为JSON对象

    在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是对象,所以,JSON对象(js对象)和JSON字符串之间的相互转换是关键. JSON可以有两种格式,一种是对象格式的,另一种是数 ...

  7. JSON字符串和JS对象之间的转换

    JSON字符串和JS对象之间的转换 1 json字符串转换为js对象 1.1 标准json格式字符串转换为Js对象  JSON字符串 str JSON.parse(str) eval(str) eva ...

  8. Gson解析json字符串、json数组转换成对象

    实体类: public class Product { private int id; private String name; private String date; public int get ...

  9. JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串;JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象

    JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串:JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象

  10. 转换成json字符串,与json字符串转换成java类型都要先转换成json对象

    转换成json字符串,与json字符串转换成java类型都要先转换成json对象

随机推荐

  1. Relocations in generic ELF (EM: 40)

    最近在搞机器上的wifi热点,需要移植一大堆东西,如hostapd\wpa_suppliant.dhcp等,这些玩意又依赖其他的一大堆库的移植,比如libnl,openssl等,今天在移植编译libn ...

  2. best-time-to-buy-and-sell-stock-iii leetcode C++

    Say you have an array for which the i th element is the price of a given stock on day i. Design an a ...

  3. 安装配置多个版本JDK

    前言:JDK有多个版本,有时为了开发需要切换不同的版本,在一部电脑上安装多个JDK,只需要按以下配置,每次即可轻松使用.以下环境为Windows10 安装JDK 安装JDK8 配置环境变量 需要配置J ...

  4. 四种 AI 技术方案,教你拥有自己的 Avatar 形象

    大火的 Avatar到底是什么 ? 随着元宇宙概念的大火,Avatar 这个词也开始越来越多出现在人们的视野.2009 年,一部由詹姆斯・卡梅隆执导 3D 科幻大片<阿凡达>让很多人认识了 ...

  5. Jenkins 邮件发送

    1.jenkins新建任务 2.配置svn 3.maven项目构建配置pom.xml 使用maven命令 clean test 构建前清除: 4.系统管理 => 插件管理 =>可选安装邮件 ...

  6. 攻防世界 Misc 新手练习区 stegano CONFidence-DS-CTF-Teaser Writeup

    攻防世界 Misc 新手练习区 stegano CONFidence-DS-CTF-Teaser Writeup 题目介绍 题目考点 隐写术 摩斯密码 Writeup 下载附件是PDF文件打开,研究一 ...

  7. SpringCould | Nacos与Feign

    服务注册Nacos 介绍 概念 一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. Nacos: Dynamic Naming and Configuration Service Nac ...

  8. JDBC数据库的使用操作总结

    JDBC是一组能够执行SQL语句的API 由于传统的数据库操作方式需要程序员掌握各个不同的数据库的API,极其不便 因此java定义了JDBC这一标准的接口和类,为程序员操作数据库提供了统一的方式 J ...

  9. 《手把手教你》系列技巧篇(四十四)-java+ selenium自动化测试-处理https 安全问题或者非信任站点-下篇(详解教程)

    1.简介   这一篇宏哥主要介绍webdriver在IE.Chrome和Firefox三个浏览器上处理不信任证书的情况,我们知道,有些网站打开是弹窗,SSL证书不可信任,但是你可以点击高级选项,继续打 ...

  10. Jmeter BlazeMeter实现web录制

      1. BlazeMeter安装和注册 BlazeMeter是一款与Apache JMeter兼容的chrome插件,采用BlazeMeter可以方便的进行流量录制和脚本生成,作为接口测试脚本编写的 ...