深圳罗湖企业网站优化,百度后台推广登录,淘宝怎么才能发布网站建设,律师行业协会网站建设默认大家都知道这个吧#xff1f;
val gson GsonBuilder().setPrettyPrinting().create()
log(gson.toJson(bean))它是用于将对象bean#xff0c;转成json以后#xff0c;能够比较漂亮的打印出json的结构。我常用的是如下4个函数。
//就是jsonStr#xff0c;使用该函数来…默认大家都知道这个吧
val gson GsonBuilder().setPrettyPrinting().create()
log(gson.toJson(bean))它是用于将对象bean转成json以后能够比较漂亮的打印出json的结构。我常用的是如下4个函数。
//就是jsonStr使用该函数来打印。把jsonStr转成Json的操作对象再行解析
private fun formatJsonBeautifulJsonStr(str:String) : String {return try {val jsonElement: JsonElement JsonParser.parseString(str)val beautifulGson GsonBuilder().setPrettyPrinting().create()return beautifulGson.toJson(jsonElement)} catch (e:Exception) {str}
}//数据bean类的打印
fun formatJsonBeautiful(obj:Any) : String {return try {val beautifulGson GsonBuilder().setPrettyPrinting().create()return beautifulGson.toJson(obj)} catch (e:Exception) {}
}//使用场景json结构打印。当json太大分行打印。
//这个函数虽然简单但是当json过大500KB以上的时候打印会卡很久。如果一行内容过大也是打印不全的。
fun largeLogWithLine(tag:String, log:String) {val ss log.split(\n)for (line in ss) Log.d(tag, line)
}//使用场景json结构打印。分行打印2.0。推荐。当然如果一行内容过大也是打印不全的。
fun logLargeLine(tag:String, str:String) {val len str.lengthval maxLine 400var i 0while (i len) {var lineIndex str.indexOf(\n, i maxLine)if (lineIndex -1) {lineIndex len}val log str.substring(i, min(lineIndex, len))Log.d(tag, log)i lineIndex 1}
}但是由于json内部在序列化或者反序列化的过程key其实是hashMap无序的。因此得不到我们想要的打印。
那么 就可以如下处理
class OutBean {public InBean bean;
}class InBean {public String name;public int age;public ListString skills;
}class CutomBeatyPrintGsonT {fun standardizeFormat(json: OutBean?): String {val gson GsonBuilder().setPrettyPrinting().registerTypeAdapter(InBean::class.java, SortedJsonSerializer()).create()return gson.toJson(json)}private class SortedJsonSerializerInBean : JsonSerializerInBean {override fun serialize(foo: InBean, type: Type, context: JsonSerializationContext): JsonElement {val jo JsonObject()jo.add(name, context.serialize(foo.name))jo.add(age, context.serialize(foo.age))jo.add(skills, context.serialize(foo.skills))return jo}}
}通过注册解析函数自行构建得到顺序。
当然如上一些代码尽量使用在Debug场景。还是很耗时的。