V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
u6b7b5fc3
V2EX  ›  Java

Java 做后端,除了 JSON 外还能以什么形式接受前端传来的数据?

  •  
  •   u6b7b5fc3 · 2020-06-24 21:42:20 +08:00 · 4342 次点击
    这是一个创建于 1616 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在开发一个 Spring MVC 的项目,控制层中使用 JSON 字符串形式接收前端传来的数据并进行解析。想问一下除了 JSON 外还能有什么形式传递数据? 还有如果数据量太大怎么传输,比如一个实体类 10 个字段,前端传来 100 个实体类转换为的 JSON,有没有更好的传输方式?

    20 条回复    2020-06-27 23:55:02 +08:00
    skypyb
        1
    skypyb  
       2020-06-24 21:51:37 +08:00 via Android
    xml... 数据更大
    100 个实体类能有多大? 该传不还是传
    tairan2006
        2
    tairan2006  
       2020-06-24 21:55:00 +08:00 via Android   ❤️ 1
    Protobuf
    hantsy
        3
    hantsy  
       2020-06-24 21:56:21 +08:00
    binary
    dcalsky
        4
    dcalsky  
       2020-06-24 22:06:29 +08:00 via Android
    websocket 长连接来发
    Hanggi
        5
    Hanggi  
       2020-06-24 22:20:40 +08:00   ❤️ 2
    为啥不分页?
    mreasonyang
        6
    mreasonyang  
       2020-06-24 22:21:24 +08:00 via iPhone
    可能需要换个思路用 gRPC 这类实现?不过 HTTP 1.1 下 JSON 格式绝对是当下使用和维护成本最低的方案。
    xiaoidea
        7
    xiaoidea  
       2020-06-24 22:23:12 +08:00
    我们公司有用 protobuf 的
    rbe
        8
    rbe  
       2020-06-24 23:36:57 +08:00
    用 lz-string 之类的算法压缩,在服务端序列化
    Bromine0x23
        9
    Bromine0x23  
       2020-06-24 23:43:35 +08:00
    序列化格式都行啊,什么 Apache Avro 、CBOR 、Smile 、Protobuf 、YAML……
    zhuangzhuang1988
        10
    zhuangzhuang1988  
       2020-06-24 23:54:07 +08:00
    from 啊.
    Yuicon
        11
    Yuicon  
       2020-06-25 00:37:51 +08:00
    有更好的为什么大家都用 json 呢
    chairuosen
        12
    chairuosen  
       2020-06-25 00:41:19 +08:00
    @Yuicon 因为 JSON 兼顾可读 /体积 /扩展性
    opengps
        13
    opengps  
       2020-06-25 01:00:08 +08:00 via Android
    你完全可以重新构造下数据结构传输。
    xml,json 都是一串字符(进一步说字节流更准),你可以尝试下发送一些自定义的格式发送,后端配合自定义的规则来接收。
    如果做过 socket 相关的开发,这一点就跟容易理解了
    also24
        14
    also24  
       2020-06-25 01:03:34 +08:00
    其实 JSON 挺好的,担心序列化导致体积过大的话,可以将 POST 的内容先 gzip 一下再发送。
    ChanKc
        15
    ChanKc  
       2020-06-25 08:56:36 +08:00 via Android
    @Yuicon 因为 JSON 是 JavaScript Object Notation 。前端很多都是 JS,转换起来更简单
    bxd5812127
        16
    bxd5812127  
       2020-06-25 09:55:13 +08:00 via iPhone
    啥都可以,那只是数据的格式而已
    bxd5812127
        17
    bxd5812127  
       2020-06-25 09:56:19 +08:00 via iPhone
    前端随便传只要后端能解析,无论什么形式都行的
    whypool
        18
    whypool  
       2020-06-25 10:30:37 +08:00
    json 前端能直接用
    hugo54
        19
    hugo54  
       2020-06-25 17:25:10 +08:00
    用 JSON 的主要理由有两条:人类可读、对前端友好。如果希望 HTTP 报文有更小的体积,可以用楼上提到的那些二进制序列化方式。
    ONCEsama
        20
    ONCEsama  
       2020-06-27 23:55:02 +08:00
    事实上,前端以什么格式来传数据都可以,只要后端能解析就行了。只不过 json 可读性好而且简单,所以它才成为了主流,以前 xml 格式也很流行。曾经我接触过一个项目,数据格式是自己定义的,看起来就是一串数字加字母的组合,人是没办法直接看出到底是什么意思的,调试的时候只能使用专门的解析工具才知道每个字段的含义。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5877 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:04 · PVG 11:04 · LAX 19:04 · JFK 22:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.