miclushine
V2EX  ›  问与答

有没有啥 Java 库或工具可以将一个对象的所有属性值转换成字符串 list 的,不包括属性名?

  •  
  •   miclushine · Apr 19, 2017 · 2660 views
    This topic created in 3488 days ago, the information mentioned may be changed or developed.
    14 replies  •  2017-04-20 00:23:37 +08:00
    misaka19000
    misaka19000
    Apr 19, 2017 via Android
    1
    这还要啥库,自己写一个啊
    miclushine
    miclushine
    OP
    Apr 19, 2017
    2
    @misaka19000 自己写了个试过了,还想问问有没有现成高效的实现方案
    6IbA2bj5ip3tK49j
    6IbA2bj5ip3tK49j
    Apr 19, 2017
    3
    反射,递归,简单用用估计几十行。
    nutting
    nutting
    Apr 19, 2017
    4
    自己写最高效。难道转成 json ?再解析?
    Lonely
    Lonely
    Apr 19, 2017 via iPhone
    5
    apache 有个 beanutils
    miclushine
    miclushine
    OP
    Apr 19, 2017
    6
    @nutting 其实我就突然想到,序列化传输对象的时候,只穿属性值,不传属性名,因为几十个属性的对象,名字也占好大一块了,所以就想有没有高效的方法去实现
    Cbdy
    Cbdy
    Apr 19, 2017 via Android
    7
    java 有个 cglib ,应该速度最快吧
    Ouyangan
    Ouyangan
    Apr 19, 2017❤️1
    8
    #5+1
    先转 map 再遍历转 list 吧.
    六七行代码就行了.

    commons-beanutils 有个 BeanMap 直接可以 bean 转 map

    不过没理解楼主的需求 , 如果序列化传输的话直接选择成熟的序列化协议,比我们自己定义的靠谱多了 ,
    楼主可以详细说明下使用场景
    fnd
    fnd
    Apr 19, 2017
    9
    自己写啊,反射、遍历
    miclushine
    miclushine
    OP
    Apr 19, 2017
    10
    @Ouyangan 就是一个对象吧,转换成 Json 传输到服务器,这个 json 里都是对象里属性名和属性值的键值对。只要是传这一种对象,属性名都是要重复传输的,但是名字肯定是不变的嘛,就是值变了,我就想怎么只传值,收到后再反序列化为对象。减少传输量。
    miclushine
    miclushine
    OP
    Apr 19, 2017
    11
    @Ouyangan 这个 BeanMap 功能跟我需要的差不多,再加点转换的代码,我觉得大致可以实现我的需求了,谢谢啊
    Ouyangan
    Ouyangan
    Apr 19, 2017❤️1
    12
    @miclushine #11 我的意见哈 , 没有必要这样做.
    1. json 的库从性能上来说已经非常不错了, 按你的想法其实是减小了数据传输量大小但是也增加了自定义序列化和反序列化 , 相对于整个过程来说性能可能没有提升, 具体还是要压测下
    2. 代码少,可读,拓展 , 成熟的协议毕竟都看得懂 ,方便协作.
    incompatible
    incompatible
    Apr 19, 2017❤️1
    13
    这种奇怪的解决方案当然不会有现成的高效的实现方案。你的序列化方案式恐怕没法处理新增或废弃字段的情况吧?
    想提升性能你可以考察一下 protobuf 或者 thrift ,这些都是现成的靠谱的方案。
    miclushine
    miclushine
    OP
    Apr 20, 2017
    14
    @Ouyangan 主要是想对网络差的条件下做点优化,有时候网络延迟有两三秒可能,相对来说序列化的消耗可以忽略不计,想多试一些方案,开开脑洞哈哈。

    @incompatible protobuf 有尝试过,不过有点太复杂了,生成模板的工具要加超多代码进来,这个序列化速度是比 json 快很多的,不过不清楚同样的数据是否能显著减少数据量。如果有其他传输优化的方法也欢迎给介绍下,嘿嘿。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1022 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 18:47 · PVG 02:47 · LAX 10:47 · JFK 13:47
    ♥ Do have faith in what you're doing.