@Data @Builder class User { public Long id; public String name; public Integer age; }
public static User user = User.builder()
.id(1L)
.name("Yuandao")
.age(21)
.build();
@Test
public void testOnJSONB() {
// JavaBean -> JSONB
byte[] userBytes = JSONB.toBytes(user);
// Lage Kid MnamePYuandao
System.out.println(new String(userBytes));
}
JSONB从某种意义上可以理解成更紧缩版本的JSON,但基于 JSONB序列化的数据展示通常是不能直接拿来用的,目前浏览器基本上是支持 JSON与 Object之间的转换,未来是想要浏览器也支持 JSONB的转换,还是在实际展示时仍以 JSON为主,存储时基于 JSONB压缩节省更多空间,无非就是多了一层转换?
原提问者GitHub用户tiandankanfeng
JSONB是PostgreSQL数据库中的一种数据类型,用于存储JSON格式的数据,并提供了一些高级的JSON操作功能,例如索引、查询等。与JSON相比,JSONB的存储方式更加紧凑,占用空间更小,同时也支持更多的JSON操作。
在应用程序中,通常使用JSON格式来表示数据,并进行传输和展示。JSONB的使用场景相对较少,主要用于存储和查询大量JSON格式的数据,例如日志、配置文件等。因此,在实际展示和传输数据时,仍以JSON为主,而不是JSONB。
对于浏览器的支持,目前主流浏览器都支持将JSON格式的数据转换为JavaScript对象,因此可以直接在浏览器中使用JSON格式的数据。至于JSONB格式的数据,可以在后端进行转换后再传输给前端,或者使用一些第三方库进行转换。
byte[] jsonbBytes = JSONB.toBytes(user); String json = JSONB.toJSONString(jsonbBytes); // 这样转换会到JSON格式,可用于dump数据
JSONB性能更好,体积更小,能适用于redis缓存,RPC传输协议,目的是代替Java内置序列化的实现,代替hessian/protobuf/msgpack这些协议。
原回答者GitHub用户wenshao
json和jsonb,而两者唯一的区别在于效率,json是对输入的完整拷贝,使用时再去解析,所以它会保留输入的空格,重复键以及顺序等。而jsonb是解析输入后保存的二进制,它在解析时会删除不必要的空格和重复的键,顺序和输入可能也不相同。使用时不用再次解析。两者对重复键的处理都是保留最后一个键值对。效率的差别:json类型存储快,使用慢,jsonb类型存储稍慢,使用较快。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。