开发者社区> 问答> 正文

关于JSONB and JSON的问题

@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

展开
收起
大圣东游 2023-04-21 12:07:22 234 0
3 条回答
写回答
取消 提交回答
  • 值得去的地方都没有捷径

    JSONB是PostgreSQL数据库中的一种数据类型,用于存储JSON格式的数据,并提供了一些高级的JSON操作功能,例如索引、查询等。与JSON相比,JSONB的存储方式更加紧凑,占用空间更小,同时也支持更多的JSON操作。

    在应用程序中,通常使用JSON格式来表示数据,并进行传输和展示。JSONB的使用场景相对较少,主要用于存储和查询大量JSON格式的数据,例如日志、配置文件等。因此,在实际展示和传输数据时,仍以JSON为主,而不是JSONB。

    对于浏览器的支持,目前主流浏览器都支持将JSON格式的数据转换为JavaScript对象,因此可以直接在浏览器中使用JSON格式的数据。至于JSONB格式的数据,可以在后端进行转换后再传输给前端,或者使用一些第三方库进行转换。

    2023-04-21 21:08:41
    赞同 展开评论 打赏
  • byte[] jsonbBytes = JSONB.toBytes(user); String json = JSONB.toJSONString(jsonbBytes); // 这样转换会到JSON格式,可用于dump数据

    JSONB性能更好,体积更小,能适用于redis缓存,RPC传输协议,目的是代替Java内置序列化的实现,代替hessian/protobuf/msgpack这些协议。

    原回答者GitHub用户wenshao

    2023-04-21 14:56:00
    赞同 展开评论 打赏
  • json和jsonb,而两者唯一的区别在于效率,json是对输入的完整拷贝,使用时再去解析,所以它会保留输入的空格,重复键以及顺序等。而jsonb是解析输入后保存的二进制,它在解析时会删除不必要的空格和重复的键,顺序和输入可能也不相同。使用时不用再次解析。两者对重复键的处理都是保留最后一个键值对。效率的差别:json类型存储快,使用慢,jsonb类型存储稍慢,使用较快。

    2023-04-21 14:01:24
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载