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

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

  •  
  •   13192262269 · 2019-03-21 17:29:00 +08:00 · 2681 次点击
    这是一个创建于 1834 天前的主题,其中的信息可能已经有所发展或是发生改变。
    问题描述:

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