文章目录
前言
了解一下日常开发中关于 Json 解析的一些非常规用法,以及使用 fastjson 的一些总结。
Json 解析
常规使用
一般情况 Json 的使用都是非常简单的。 我们会根据上游定义的 Json 数据格式,由下游定义相应的解析模型。比如像下面这个简单的 Json 字符串。
{
"name":"mike",
"address":"beijing"
}
一般会定义如下的数据类(以 Kotlin 为例)
data class KotlinPeople(val name: String? = "", val address: String? = "")
具体使用也是非常简单了,无论是借助 fastjson 、gson 或者是原生的 JsonObject 都可以非常方便的完成数据的序列化和反序列操作,比如以 fastjson 为例。
- Json 字符串转 对象
val people = JSONObject.parseObject(json, KotlinPeople::class.java)
- 对象转 Json 字符串
val jsonStr = JSONObject.toJSONString(people)
无论原始的 Json 数据格式多么的复杂,包含原始数据类型、List、数组还是他类型,只要需要解析的属性的 key 是确定的,那么就可以定义出相应的数据模型来解析。 因为在定义任何一个数据模型是时,对于其中的每一个字段(或者叫做属性、类成员),唯一需要确定的就是变量的类型和变量名的名称,比如面对下面这个略显复杂的 Json :
{
"token": "1234",
"key": "mute",
"simple": {
"age": 11
},
"sites": [
{
"id": "1",
"name": "菜鸟教程",
"url": "www.runoob.com"
},
{
"id": "2",
"name": "菜鸟工具",
"url": "c.runoob.com"
},
{
"id": "3",
"name": "Google",
"url": "www.google.com"
}
]
}
我们依旧可以定义出如下的数据模型
public class SiteWrapper {
public String token;
public String key;
public Simple simple;
public List<Site> sites;
public class Simeple {
public String age;
}
public static class Site {
public String id;
public String name;
public String url;
public Site()