avatar

目录
scala样例类转换成为JSON字符串

JSON常用方法

Java中并没有内置JSON的解析,因此使用JSON需要借助第三方类库。

几个常用的 JSON 解析类库:

  • Gson: 谷歌开发的 JSON 库,功能十分全面。
  • FastJson: 阿里巴巴开发的 JSON 库,性能十分优秀。
  • Jackson: 社区十分活跃且更新速度很快。

maven依赖:

xml
1
2
3
4
5
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>

JSON 对象与字符串的相互转化

方法 作用
JSON.parseObject() 从字符串解析 JSON 对象
JSON.parseArray() 从字符串解析 JSON 数组
JSON.toJSONString(obj/array) 将 JSON 对象或 JSON 数组转化为字符串

示例:

java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

public class JSONTest {
public static void main(String[] args) {
//从字符串解析JSON对象
JSONObject obj = JSON.parseObject("{\"name\":\"ys\"}");
System.out.println(obj); //{"name":"ys"}

//将JSON对象转化为字符串
String objStr = JSON.toJSONString(obj);
System.out.println(objStr); //{"name":"ys"}
}
}

Scala样例类转换成JSON字符串

Scala样例类转换成为JSON字符串,JSON.toJSONString(obj)会失效,所以使用如下方法:

maven依赖(json4s —> json for scala):

xml
1
2
3
4
5
<dependency>
<groupId>org.json4s</groupId>
<artifactId>json4s-native_2.11</artifactId>
<version>3.5.4</version>
</dependency>
scala
1
2
3
4
import org.json4s.native.Serialization
implicit val formats=org.json4s.DefaultFormats //隐式转换

val orderInfoJson: String = Serialization.write(orderInfo)

示例

scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import com.alibaba.fastjson.{JSON, JSONObject}
import com.atguigu.bean.UserInfo
import org.json4s.native.Serialization

object JsonStrTest {

def main(args: Array[String]): Unit = {

val userInfo = UserInfo("1001","name1","5","2020-05-25","male")

implicit val formats = org.json4s.DefaultFormats

//println(JSON.toJSONString(userInfo)) //报错

val str = Serialization.write(userInfo)
println(str)
// {"id":"1001","login_name":"name1","user_level":"5","birthday":"2020-05-25","gender":"male"}

val nObject: JSONObject = JSON.parseObject(str) //正常解析
println(nObject)
// {"birthday":"2020-05-25","login_name":"name1","gender":"male","user_level":"5","id":"1001"}

}
}

UserInfo.scala

scala
1
2
3
4
5
case class UserInfo(id:String,
login_name:String,
user_level:String,
birthday:String,
gender:String)
文章作者: Yang4
文章链接: https://masteryang4.github.io/2020/05/25/scala%E6%A0%B7%E4%BE%8B%E7%B1%BB%E8%BD%AC%E6%8D%A2%E6%88%90%E4%B8%BAJSON%E5%AD%97%E7%AC%A6%E4%B8%B2/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 MasterYangBlog
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论