2016-12-10 143 views
0

我有一个数据库与2列,键和值。记录:斯普利特Java弹簧

------------------------------------ 
| key |   value    | 
------------------------------------ 
| A | 1,desc 1;2,desc 2;3,desc 3 | 
------------------------------------ 

我想分割值列成为JSON格式:

[{"key":"1","value":"desc 1"},{"key":"2","value":"desc 2"},{"key":"3", "value":"desc 3"}] 

当我把分流的功能?在服务?因为2分裂太难了。如何解决这个问题呢?

感谢, 鲍比

+0

你是如何得到这些数据的?你在那里复制的东西看起来像mysql的命令行界面。你是否试图按照上面所写的那样解析字符串?因为如果你使用java从数据库中提取这些数据,你可以直接获取字符串,而不用使用 - 和|字符。如果您确实需要按照书面使用该字符串,请先删除 - 和|只抓住第四条线 – badperson

回答

3

这取决于如何应用程序通常与该值的工作。如果通常的情况是使用这一列中的一些特定数据,我会在仓库级解析这个:

public static void main(String[] args) { 

    // You actually get this from DB 
    String value = "1,desc 1;2,desc 2;3,desc 3"; 

    JSONArray j = new JSONArray(); 
    Stream.of(value.split(";")).forEach((pair -> { 
     String[] keyValue = pair.split(","); 

     JSONObject o = new JSONObject(); 
     o.put("key", keyValue[0]); 
     o.put("value", keyValue[1]); 
     j.put(o); 

    })); 


    System.out.println(j); 

}