FastJson配置 ObjectId

 class ObjectIdSerializer : ObjectSerializer {
override fun write(serializer: JSONSerializer?, value: Any?, filedName: Any?, fieldType: Type?, features: Int) {
val out = serializer!!.getWriter()
if (value == null) {
out.writeNull()
return
} out.writeString(value.toString())
}
} @Configuration
open class MyWebMvcConfig : WebMvcConfigurerAdapter() { override fun configureMessageConverters(converters: MutableList<HttpMessageConverter<*>>?) {
val fastConverter = FastJsonHttpMessageConverter() val fastJsonConfig = FastJsonConfig()
// fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat)
fastJsonConfig.serializeConfig.put(ObjectId::class.java, ObjectIdSerializer());
fastConverter.fastJsonConfig = fastJsonConfig //处理中文乱码问题
fastConverter.supportedMediaTypes = mutableListOf(MediaType.APPLICATION_JSON_UTF8) var stringMessageConvert = StringHttpMessageConverter();
stringMessageConvert.setWriteAcceptCharset(false)
stringMessageConvert.supportedMediaTypes = mutableListOf(MediaType.ALL)
stringMessageConvert.defaultCharset = Charset.forName("utf-8")
converters!!.add(stringMessageConvert);
converters!!.add(fastConverter)
}
}
ParserConfig.getGlobalInstance().putDeserializer(ObjectId::class.java, ObjectIdDeserializer())

class ObjectIdDeserializer : ObjectDeserializer { override fun <T> deserialze(parser: DefaultJSONParser, type: Type,
fieldName: Any): T {
val lexer = parser.getLexer()
val value = lexer.stringVal()
return ObjectId(value) as T;
} override fun getFastMatchToken(): Int {
// TODO Auto-generated method stub
return 0
}
} fun <T> T.ToJson(): String {
if (this is String) return this; val filter = ValueFilter { source, name, value ->
if (value is ObjectId) {
return@ValueFilter value.toString();
}
value;
} // var sc = SerializeConfig();
// sc.put(ObjectId::class.java, ObjectIdSerializer());
return JSON.toJSONString(this, filter)
}

SpringBoot笔记--FastJson的更多相关文章

  1. springboot整合fastJson遇到重定向问题

    通过网上教程使用springboot整合fastJson后遇到页面重定向问题(使用的springboot版本是2.0.2.RELEASE ,其他的版本可能不会出现以下问题),如下图: 我的项目结构如下 ...

  2. SpringBoot阿里巴巴Fastjson的一些常用配置

    SpringBoot阿里巴巴Fastjson的一些常用配置 @Bean public HttpMessageConverters fastJsonHttpMessageConverters() { F ...

  3. springboot使用fastJson作为json解析框架

    springboot使用fastJson作为json解析框架 springboot默认自带json解析框架,默认使用jackson,如果使用fastjson,可以按照下列方式配置使用 〇.搭建spri ...

  4. springboot使用fastjson中文乱码解决方法 【转载】

    以前使用fastjson替换jackson时,没有直接在页面打印过json,都是js使用没有出现乱码,偶然 打印出来出现了中文乱码 之前使用的配置方式 @Configuration public cl ...

  5. SpringBoot笔记十六:ElasticSearch

    目录 ElasticSearch官方文档 ElasticSearch安装 ElasticSearch简介 ElasticSearch操作数据,RESTful风格 存储 检查是否存在 删除 查询 更新 ...

  6. Springboot使用FastJson后,接口返回中文乱码的问题解决。

    哎,天下文章一大抄,到处都是一模一样的教你怎么替换掉jackson成fastjson的,可后续中文乱码网上居然没一篇文章.翻了一会源码还是写个文章共享下吧.免得后来人又浪费时间折腾. 在springb ...

  7. SpringBoot中用Fastjson替换默认的Jackson

    一:前言 经过测试,Jackson有很多不合人意的地方,因此建议用Fastjson来替换: 二:Jackson的坑 先定义实体类: @Data @AllArgsConstructor @NoArgsC ...

  8. 十七、springboot配置FastJson为Spring Boot默认JSON解析框架

    前提 springboot默认自带json解析框架,默认使用jackson,如果使用fastjson,可以按照下列方式配置使用 1.引入fastjson依赖库: maven: <dependen ...

  9. springboot笔记-1.自动化配置的关键

    最近发现看过的东西容易忘,但是写一遍之后印象倒是会深刻的多. 总所周知springboot极大的简化了java开发繁琐性,而其最大的优势应该就是自动化配置了.比如要使用redis,我们直接引入相关的包 ...

随机推荐

  1. Sql 查询结果 根据某个字段值 变更另外一个字段值 case when

    SELECT CASE THEN '*******' ELSE Plate END AS Plate, CarType FROM Cars;

  2. sqlserver 拆分

    有表tb, 如下:id value----------- -----------1 aa,bb2 aaa,bbb,ccc欲按id,分拆value列, 分拆后结果如下:id value--------- ...

  3. centos6.9NAT网络模式

    1.对虚拟机进行设置,点击该虚拟机的设置在网络适配器下将网络连接设置为NAT模式. 2.对虚拟机进行设置,点击虚拟机左上方的编辑-->虚拟网络编辑器,将WMnet信息设置为NAT模式,其它的无需 ...

  4. Python基础知识:列表

    1.pop(i)删除列表任意位置元素,并继续使用它,如果括号为空,默认删除末尾 #pop()函数 guests=['Liming','Liuhan','Hanjieming'] for guest i ...

  5. Python3编写网络爬虫10-数据存储方式三-CSV文件存储

    3.CSV文件存储 CSV 全称 Comma-Separated Values 中文叫做逗号分隔值或者字符分隔值,文件以纯文本形式存储表格数据.文件是一个字符序列 可以由任意数目的记录组成相当于一个结 ...

  6. mysql之4;

    1表之间的关系: 2select查询语句: 1表之间的关系 (1)多对一:(一个表里的多条记录对应另一个表里的一个记录) 建立多对一的关系需要注意1 先建立被关联的表,被关联的字段必须保证是唯一的2 ...

  7. js中采用词法作用域

    所谓的 词法( 代码 )作用域, 就是代码在编写过程中体现出来的作用范围. 代码一旦写好, 不用执行, 作用范围就已经确定好了. 这个就是所谓词法作用域. 在 js 中词法作用域规则: 1.函数允许访 ...

  8. metamask源码学习-metamask-controller.js

    The MetaMask Controller——The central metamask controller. Aggregates other controllers and exports a ...

  9. day20 Python 高阶函数,函数,嵌套,闭包 装饰器

    高阶函数定义 1.函数接收的参数是一个函数名 2.函数的返回值是一个函数名 3.满足上述条件任意一个都可以称之为高阶函数 一.函数的接收参数是一个函数名 import time def foo(): ...

  10. day20 Python 装饰器

    装饰器:本质就是函数,为其他函数添加附加功能,一个原则是不修改函数的源代码,另外一个原则是不修改被修饰函数的调用功能 装饰器=高阶函数+函数嵌套+闭包 前戏 import time def cal(l ...