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

Java 求解:关于如何将 mysql 的字符串转成数组😀

  •  
  •   13192262269 · 33 天前 · 692 次点击
    这是一个创建于 33 天前的主题,其中的信息可能已经有所发展或是发生改变。
    问题描述:

    表里的某个字段数据:语句:(select S.ziduan1,S.ziduan2 from test S)
    结果:
    "ziduan1"={"A1","B1","C1"},"ziduan2"={"A2","B2","C2"}

    java 是通过 Map 获取结果的

    想要通过 java 输出效果:
    "ziduan1"=[A1","B1","C1"],"ziduan2"=["A2","B2","C2"]

    注意{}与[]的区别,谢谢😵有没有大神呀,跪求了
    13 回复  |  直到 2019-03-21 22:47:53 +08:00
        1
    13192262269   33 天前
    我想到一种方法:Map<String,自定义转换方法> 来转换不知道这个要怎么写?✍有人指点一下吗?
        2
    domty   33 天前
    sql 查出来就是一个 list 吧?
    每个 list 就是一个 obj 有 ziduan1 和 ziduan2 两个属性
        3
    10Buns   33 天前
    直接根据字段名自定义方法取?
    mybatis 自定义类型转换器?
        4
    bxb100   33 天前
    查出来不是 list<map> 吗?
    然而这个能用 list.toArray() 转吗
        5
    13192262269   33 天前
    我想到一个思路:Java 中 map.values 转换为 list
        6
    13192262269   33 天前
    @domty #2 是的,但是 ziduan1 属性的值为"ziduan1"={"A1","B1","C1"},我想转成"ziduan1"=[A1","B1","C1"]
        7
    wind3110991   33 天前
    这里的问题不在于你要怎么转换,而是:明明这两个字段都是 list,为什么你还要在 DB 里把字段存成{"1", "2"}
    存为["1", "2"]不什么事情都没有了么,而且{"1", "2"}是什么鬼,不应该是{"1":"", "2":""}吗
        8
    wind3110991   33 天前
    实在不行,手动替换字符串{为[ ,}为],建议把这个存储改成 redis 吧,redis 支持 set 和 list 的 kv 存储。
    要是我看到谁像你这样写我肯定喷他了。。
        9
    gejun123456   33 天前 via iPhone
    新建一个对象 两个字段是 string 数组 然后查出来 split 转一下呗
        10
    13192262269   33 天前
    @wind3110991 #8 我写错了,=是:
        11
    13192262269   33 天前
    @wind3110991 #8 我也想存数组,问题是 mysql 不能存数组
        12
    wind3110991   33 天前
    @13192262269 数据量上去了,业务关系不是特别复杂的话,可以用 redis ;
    或者你可以多建一张表,来存这个数组的内容,不建议你这样设计字段
        13
    gz911122   33 天前
    .replace("{","[").replace("}","]")
    不就完事了
    听不懂楼主什么意思
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4246 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 18ms · UTC 02:12 · PVG 10:12 · LAX 19:12 · JFK 22:12
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1