Jsoner
Jsoner 是Cloudopt Next 的 Json 工具类,几乎所有与 Json 有关的操作都是使用这个工具类的,默认使用 Jackson。参数中没有指定反序列化的情况下将会返回底层 json 工具的对象,建议在使用 Cloudopt Next 期间所有 Json 有关的操作都使用这个帮助类。为了方便大家使用,我们还提供了创建默认的 json 对象的 DSL。
具体使用方式可以参考下面的测试用例:
class TestCase {private val testJsonArrayString = "[{\"name\":\"Andy\",\"sex\":1},{\"name\":\"GitHub\",\"sex\":2}]"private val testJsonString = "{\"name\":\"Andy\",\"sex\":1}"@Testfun toJsonMap() {assertTrue {testJsonString.jsonToMutableMap()["name"]?.equals("Andy") ?: false}}@Testfun toJsonMapList() {assertTrue {testJsonArrayString.jsonToMutableMapList()[0]["name"]?.equals("Andy") ?: false}}@Testfun toJsonString() {assertTrue { Student("Andy", 1).toJsonString() == testJsonString }}@Testfun toJsonObject() {assertTrue {testJsonString.toJsonObject().getString("name") == "Andy"}}@Testfun toJsonArray() {assertTrue {testJsonArrayString.toJsonArray().getJsonObject(0).getString("name") == "Andy"}}@Testfun toObject() {val student: Student = testJsonString.jsonToObject(Student::class)assertTrue {student.name == "Andy"}}@Testfun toObjectList() {val student: List<Student> = testJsonArrayString.jsonToObjectList(Student::class)assertTrue {student[0].name == "Andy"}}@Testfun toList() {assertTrue {(testJsonArrayString.jsonToObjectList()[0] as JsonObject).getString("name") == "Andy"}}@Testfun creatJsonByDSL() {val a = json("a" to "1","b" to json("c" to "2"),"c" to jsonArray(json("d" to "3")),"student" to Student(name = "next", sex = 1))assert(a.toJsonString().isNotBlank())}}
自定义Jsoner
Jsoner 是单例模式的,在初始化时会自动读取配置文件中的 jsonProvider 中的类名,如 net.cloudopt.next.json.DefaultJSONProvider 来进行初始化,如果您需要替换自己喜欢的 Json 支持库(如 gson)可以创建一个新的 JSONProvider 并修改配置文件。
创建一个新的 Provider 非常简单,只需要实现 JsonProvider 类即可。您也可以参考默认的 DefaultJSONProvider。
