![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
json
文章平均质量分 71
10km
这个作者很懒,什么都没留下…
展开
-
geometry:fastjson实现对JTS geometry对象的序列化和反序列化
在之前的博文中,实现了对MySQL数据库存储的WKB数据到JTS Geometry对象之间的转换。当我们从数据库中得到的Geometry对象后,我们需要把它提供给前端时,就需要将它转为JSON格式,或从前端将JSON数据反序列化为Geometry对象。本文说明使用JSON工具库Fastjson如何实现这个过程。JTS Geometry对象不是标准的Java Bean不能自动被Fastjson执行序列化和反序列化。所以我们需要为 Geometry对象实现自定义的序列化器和反序列化器。原创 2023-03-17 12:52:21 · 976 阅读 · 0 评论 -
geometry:Jackson实现对JTS geometry对象的序列化和反序列化
在上一篇博文中,实现了对MySQL数据库存储的WKB数据到JTS Geometry对象之间的转换。当我们从数据库中得到的Geometry对象后,我们需要把它提供给前端时,就需要将它转为JSON格式,或从前端将JSON数据反序列化为Geometry对象。本文说明使用JSON工具库Jackson如何实现这个过程。JTS Geometry对象不是标准的Java Bean不能自动被Jackson执行序列化和反序列化。所以我们需要为 Geometry对象实现自定义的序列化器和反序列化器。原创 2023-03-17 12:19:03 · 986 阅读 · 0 评论 -
jackson:基于BeanSerializer实现自定义的Java bean序列化器
之前写过一篇博客,介绍了如何继承实现自定义的反序列化器。如果要实现继承BeanDeserializer实现自定义的Java bean 解析器,与做序列化器一样,如何将一个Class转为构造方法需要的类型才是关键。原创 2024-06-07 15:14:14 · 449 阅读 · 0 评论 -
jackson:JSON字符串(String)类型的成员序列化和反序列化
对于如下类型,props字段为JSON字符串(这在数据库经常用到),可以自由保存各种类型的数据输出这个结果如果送给前端并不友好,前端还需要再对props字段进行解析才能得到里面的值。原创 2024-03-23 16:25:50 · 1228 阅读 · 0 评论 -
jackson:基于BeanDeserializer实现自定义的Java bean 解析器
如果能基于这个类实现自定义反序列化器,那么就可以利用它已有的成熟逻辑,代码实现上会简化,并且稳定和适应性也更好。但上面这种方式只适合已经知解析类型的场景,在一些特殊场景,比如不知道特定解析类型的场景,这个方法会有局限性。为参数的构造方法,调用者直接提供Java Bean的类,就可以实现构造方法。关于jackson实现自定义的对象解析器,最常用的方式就是继承顶级抽象类(字段的值受其他字段setter方法影响,所以下面的实现中先解析出。方法,就可以写继承BeanDeserializer 的子类了,原创 2024-03-22 14:55:56 · 759 阅读 · 0 评论 -
java:支持多种日期格式的Jackson自适应日期类型解析器实现
上一篇博客介绍了可以自适应解析多种日期格式的Fastjson的日期解析器实现,本文说明如何在Jackson下实现同的样的自适应日期解析器。jackson的标准解析器抽象类中已经提供了解析日期的实现方法(_parseDate其中方法已经提供了完善的TOKEN分析逻辑(如下),所以没必要从TOKEN识别开始做。只需要重写方法,对输入字符串尝试使用多种日期格式解析就可以了。原创 2024-03-21 14:13:04 · 766 阅读 · 0 评论 -
java:java.util.BitSet对象的Fastjson序列化和反序列化实现
是个非常方便的比特位数据存储和操作类,一个 bit 具有2个值:0和1,正好可以用来表示 false 和 true,适用于判断“数据是否存在”的场景。但是,这个从JDK1.0版本就存在的类,Jackson,Fastjson这些主流的JSON工具却并没有对它提供序列化和反序列化支持。所以如果要在自己的数据结构中用到BitSet,就要自己实现序列化和反序列化。主要思路就是在序列化过程中将BitSet的数据转为JSON数组(如。以下是BitSet对象的Fastjson序列化和反序列化实现,原创 2024-03-19 16:37:07 · 370 阅读 · 0 评论 -
java:java.util.BitSet对象的Jackson序列化和反序列化实现
是个非常方便的比特位数据存储和操作类,一个 bit 具有2个值:0和1,正好可以用来表示 false 和 true,适用于判断“数据是否存在”的场景。但是,这个从JDK1.0版本就存在的类,Jackson,Fastjson这些主流的JSON工具却并没有对它提供序列化和反序列化支持。》介绍了Fastjson实现,本文说明Jackson如何支持BitSet类型的序列化和反序列化。所以如果要在自己的数据结构中用到BitSet,就要自己实现序列化和反序列化。在反序列化阶段,根据TOKEN类型不同,将数据序列化为。原创 2024-03-20 10:45:26 · 281 阅读 · 0 评论 -
java:支持更多日期格式的fastjson日期解析器(ObjectDeserializer)实现
Fastjson内置的日期类型解析器(com.alibaba.fastjson.serializer.DateCodec)只支持ISO8601以及SQL标准日期格式(),但日期格式的常用种类也不少:比如 Date.toString()输出的这样的格式。除非在使用注解方式指定日期格式。否则Fastjson不能解析这样的格式。原创 2024-03-20 18:23:49 · 636 阅读 · 0 评论 -
java:fastjson,jackson自定义反序列化器设计暨jackson反序列化时出现StackOverflowError异常的原因分析
方法实现字段解析,在字段解析过程中自动识别snake-case的数据库字段名转为camel-case的JavaBean字段名(参见findProperty方法),并在最后调用setter方法赋值modified,initialized字段确保它们的值与原始输入值一致。字段的值是不确定的。取决于这两个字段被反序列化时的顺序,如果它们被在放在最后反序列化,那它们的值是正确的,否则它们的值与原始输入值肯定是不一致的。为基类,BeanDeserializer是Jackson默认的Java Bean反序列化实现。原创 2023-05-04 12:43:19 · 1715 阅读 · 0 评论 -
c++11:nlohmann::json进阶使用(三)使用basic_json模板类
nlohmann::json是非常好用的一个json开源解析库.nlohmann/json的源码是基于C++11标准写的,整个源码就是一个文件 nlohmann/json.hpp,引用非常方便。关于nlohmann/json的基本使用官网(https://github.com/nlohmann/json)上有比较详细的介绍。这里不再赘述,本文主要是介绍在nlohmann/json的基本使用之外一些我在使用 nlohmann/json 用到的一些扩展功能和重要但不太被了解的特性。我的上一篇博客里解决了第三原创 2021-11-26 14:52:29 · 2997 阅读 · 0 评论 -
c++11:nlohmann::json进阶使用(二)应用adl_serializer解决第三方数据类型(such as uri)的序列化和反序列化
nlohmann::json是非常好用的一个json开源解析库.nlohmann/json的源码是基于C++11标准写的,整个源码就是一个文件 nlohmann/json.hpp,引用非常方便。关于nlohmann/json的基本使用官网(https://github.com/nlohmann/json)上有比较详细的介绍。这里不再赘述,本文主要是介绍在nlohmann/json的基本使用之外一些我在使用 nlohmann/json 用到的一些扩展功能和重要但不太被了解的特性。uriben-zen/u原创 2021-11-26 13:11:40 · 2536 阅读 · 0 评论 -
c++11:nlohmann::json进阶使用(一)ordered_json
nlohmann::json是非常好用的一个json开源解析库.nlohmann/json的源码是基于C++11标准写的,整个源码就是一个文件 nlohmann/json.hpp,引用非常方便。关于nlohmann/json的基本使用官网(https://github.com/nlohmann/json)上有比较详细的介绍。这里不再赘述,本文主要是介绍在nlohmann/json的基本使用之外一些我在使用 nlohmann/json 用到的一些扩展功能和重要但不太被了解的特性。ordered_json原创 2021-11-26 11:57:09 · 4469 阅读 · 2 评论 -
cmake编译cJSON,使用时找不到cjson-static target(静态库) 的问题
cJSON是基于ANSI C的跨平台JSON解析开源库,支持cmake跨平台编译.使用cmake也不复杂,以gcc编译为例以下是编译过程。build cJSON# 从github下载cJSON代码git clone https://github.com/DaveGamble/cJSON.gitcd cJSON# 当前文件夹下生成编译工程文件# BUILD_SHARED_AND_STATIC_LIBS=ON 指定生成静态库和动态库,默认只生成动态库cmake . -G "Unix Makefi原创 2021-11-09 12:34:55 · 1314 阅读 · 0 评论 -
cmake:VS2015和GCC编译cJSON
cJSON是基于ANSI C的跨平台JSON解析开源库,在嵌入式应用中使用比较广泛, cJSON支持CMAKE编译,本文以脚本形式提供了使用CMAKE基于VS2015/Windows以及GCC/MinGW的编译过程。环境要求cmake 这是必须的编译工具Visual Studio 2015 OR MinGW for windowsgcc for linuxVisual Studio 2015 编译脚本msvc_build.bat要求cJSON源码文件夹与msvc_build.bat脚本在同一原创 2021-11-09 11:01:47 · 678 阅读 · 0 评论 -
fastjson:javabean按字段(field)序列化存储为Map并反序列化改进
需求说明最近的项目应用到redis数据库,需要将java bean存储在redis数据库。因为需要对数据库中的某个字段进行修改,所以在redis上不能用简单的string类型存储,而要以hash类型存储。这就需要在向数据库写入java bean对象之前要将java bean按字段序列化为一个Map 。 而在从数据库读取后,又需要将所有字段合并反序列化还原成一个java原创 2017-09-10 14:37:58 · 2420 阅读 · 1 评论 -
fastjson:javabean按字段(field)序列化存储为Map并反序列化
大部分json工具对java对象整体序列化都提供了简单的调用方式,以fastjson为例:Model model = new Model();String json = JSON.toJSONString(model); // 序列化Model model2 = JSON.parseObject(json, Model.class); // 反序列化需求说明最近的项目应用到redis数据库,需要将原创 2017-09-10 12:20:17 · 4986 阅读 · 1 评论 -
fastjson:获取类(Class)的所有可序列化字段(field)
用fastjson对一个类进行序列化时,在没有类的实例只有类的Class的情况下,如果想知道这个Class有所有可以被序列化的字段名,可以用`com.alibaba.fastjson.util.TypeUtils.computeGetters(Class clazz, Map aliasMap)`方法来实现,实现代码很简单:原创 2017-09-11 16:20:49 · 2388 阅读 · 1 评论 -
fastjson:实现对java.nio.ByteBuffer数据类型的支持
一般情况下,我们都用byte[]作为保存二进制数据的数据类型,较少用ByteBuffer来表示字节数组。然而最近的工作中需要二进制数据(字节数组)即支持fastjson序列化也要能用thrift:swift序列化。 我们知道fastjson可以对byte[]进行序列化,但fastjson默认是不支持java.noi.ByteBuffer数据类型序列化的。 而thrift是跨语言的,所以它并没有b原创 2017-10-02 16:00:07 · 2623 阅读 · 1 评论 -
fastjson:对于Exception中复杂类型(enum,...以及自定义类型)成员的处理
如果一个Exception类中有枚举类型或其他复杂类型(比如java.util.Date,或自定义类型)的成员,fastjson反序列化会抛出异常。 // ServiceSecurityException 类型中 type 成员是个枚举类型SecurityExceptionType ServiceSecurityException exp = new ServiceSecurityEx原创 2017-11-23 17:06:54 · 5253 阅读 · 1 评论 -
dtalk:基于Redis发布订阅(pub/sub)系统实现的前端设备控制框架(java)
术语描述设备端,前端设备实现特定功能的计算机设备管理端,终端,admin client以web应用或本地应用方式管理设备端的应用client端设备端和管理端的统称消息系统基于redis为client端和服务端提供消息服务的中间件频道,channel继承 redis 的频道概念,消息系统传递消息时使用的一个有唯一名字和特定数据类型的数据通道,消息发送者将消息发送到指定的频道,该频道的所有消息订阅者就可以及时收到发送者的消息,对于一个频道,消息发送者和订阅者都可以有多个。原创 2019-04-14 23:17:57 · 804 阅读 · 1 评论 -
java:关于json解析工具选型(JSON-java,json-lib,gson,fastjson)
没有最好的工具,只有最适合的. 最近的项目需要对java 对象和json之间的序列化和反序列化,更准确的说是java bean对象和json之间的转换,使用哪个工具进行转换,让我犹豫了不少时间。 json工具有很多 http://json.org 中列出不少,我接触过的有JSON-java,json-lib,google-gson,还有阿里巴巴的fastjson。JSON-java我最早用过的是原创 2017-09-07 11:45:23 · 2861 阅读 · 1 评论