From entry to abandoment 2020-10-19 16:35 采纳率: 0%
浏览 153
已采纳

String转数组再转String

[
    {"id":"34","itemName":"1","user_id":"100001","pic":"http://localhost:8080/img/fanqie.jpg","price":"700","count":"15","buy_no":"20201014150857","szk":"aaa"},
    {"id":"3","itemName":"2","user_id":"100001","pic":"http://localhost:8080/img/xigua.jpg","price":"600","count":"10","buy_no":"20201014150857","szk":"aaa"},
    {"id":"9","itemName":"3","user_id":"100001","pic":"http://localhost:8080/img/qiezi.jpg","price":"700","count":"30","buy_no":"20201014150857","szk":"aaa"},
    {"id":"13","itemName":"4","user_id":"100001","pic":"http://localhost:8080/img/juzi.jpg","price":"700","count":"14","buy_no":"20201014150857","szk":"aaa"},
    {"id":"3","itemName":"5","user_id":"100001","pic":"http://localhost:8080/img/xigua.jpg","price":"600","count":"12","buy_no":"20201014152727","szk":"aaa"},
    {"id":"15","itemName":"6","user_id":"100001","pic":"http://localhost:8080/img/fanqie.jpg","price":"700","count":"30","buy_no":"20201014152727","szk":"aaa"},
    {"id":"84","itemName":"7","user_id":"100001","pic":"http://localhost:8080/img/taozi.jpg","price":"700","count":"18","buy_no":"20201014152727","szk":"aaa"},
    {"id":"54","itemName":"8","user_id":"100001","pic":"http://localhost:8080/img/huanggua.jpg","price":"600","count":"109","buy_no":"20201014152727","szk":"aaa"},
    {"id":"22","itemName":"9","user_id":"100001","pic":"http://localhost:8080/img/xigua.jpg","price":"600","count":"33","buy_no":"20201014183740","szk":"aaa"},
    {"id":"3","itemName":"10","user_id":"100001","pic":"http://localhost:8080/img/xigua.jpg","price":"600","count":"3","buy_no":"20201014183740","szk":"aaa"},
    {"id":"1","itemName":"11","user_id":"100001","pic":"http://localhost:8080/img/pinguo.jpg","price":"600","count":"30","buy_no":"20201015144738","szk":"aaa"},
    {"id":"76","itemName":"12","user_id":"100001","pic":"http://localhost:8080/img/qiezi.jpg","price":"700","count":"30","buy_no":"20201015144738","szk":"aaa"},
    {"id":"72","itemName":"13","user_id":"100001","pic":"http://localhost:8080/img/fanqie.jpg","price":"700","count":"3","buy_no":"20201015190607","szk":"aaa"},
    {"id":"88","itemName":"14","user_id":"100001","pic":"http://localhost:8080/img/xigua.jpg","price":"600","count":"10","buy_no":"20201015190607","szk":"aaa"},
    {"id":"2","itemName":"15","user_id":"100001","pic":"http://localhost:8080/img/xiangjiao.jpg","price":"700","count":"1","buy_no":"20201015190607","szk":"aaa"},
    {"id":"15","itemName":"16","user_id":"100001","pic":"http://localhost:8080/img/fanqie.jpg","price":"700","count":"10","buy_no":"20201014113653","szk":"aaa"},
    {"id":"3","itemName":"17","user_id":"100001","pic":"http://localhost:8080/img/xigua.jpg","price":"600","count":"3","buy_no":"20201014113653","szk":"aaa"},
    {"id":"36","itemName":"18","user_id":"100001","pic":"http://localhost:8080/img/taozi.jpg","price":"700","count":"10","buy_no":"20201014113653","szk":"aaa"}
]

上面的String是搜索数据库返回的String结果,
我想根据buyno这个字段对它进行分组,最后想给前端返回下面这样结构的
String字符串

[
    { "buy_no":"20201014150857","arr":
        [
            {"id":"1","itemName":"トマト","user_id":"100001","pic":"http://localhost:8080/img/fanqie.jpg","price":"700","count":"15","szk":"aaa"}, 
            {"id":"2","itemName":"スイカ","user_id":"100001","pic":"http://localhost:8080/img/xigua.jpg","price":"600","count":"10","szk":"aaa"},
            {"id":"3","itemName":"ナス","user_id":"100001","pic":"http://localhost:8080/img/qiezi.jpg","price":"700","count":"30","szk":"aaa"},
            {"id":"4","itemName":"ミカン","user_id":"100001","pic":"http://localhost:8080/img/juzi.jpg","price":"700","count":"14","szk":"aaa"}
        ]
    },
    { "buy_no":"20201014152727","arr":
        [
            {"id":"5","itemName":"スイカ","user_id":"100001","pic":"http://localhost:8080/img/xigua.jpg","price":"600","count":"12","szk":"aaa"}, 
            {"id":"6","itemName":"トマト","user_id":"100001","pic":"http://localhost:8080/img/fanqie.jpg","price":"700","count":"30","szk":"aaa"}, 
            {"id":"7","itemName":"モモ","user_id":"100001","pic":"http://localhost:8080/img/taozi.jpg","price":"700","count":"18","szk":"aaa"}, 
            {"id":"8","itemName":"キュウリ","user_id":"100001","pic":"http://localhost:8080/img/huanggua.jpg","price":"600","count":"109","szk":"aaa"}
        ]
    },
    { "buy_no":"20201014183740","arr":
        [
            {"id":"9","itemName":"スイカ","user_id":"100001","pic":"http://localhost:8080/img/xigua.jpg","price":"600","count":"33","szk":"aaa"}, 
            {"id":"10","itemName":"スイカ","user_id":"100001","pic":"http://localhost:8080/img/xigua.jpg","price":"600","count":"3","szk":"aaa"}
        ]
    },
    { "buy_no":"20201015144738","arr":
        [
            {"id":"11","itemName":"リンゴ","user_id":"100001","pic":"http://localhost:8080/img/pinguo.jpg","price":"600","count":"30","szk":"aaa"}, 
            {"id":"12","itemName":"イチゴ","user_id":"100001","pic":"http://localhost:8080/img/qiezi.jpg","price":"700","count":"30","szk":"aaa"}
        ]
    },
    { "buy_no":"20201015190607","arr":
        [
            {"id":"13","itemName":"トマト","user_id":"100001","pic":"http://localhost:8080/img/fanqie.jpg","price":"700","count":"3","szk":"aaa"}, 
            {"id":"14","itemName":"スイカ","user_id":"100001","pic":"http://localhost:8080/img/xigua.jpg","price":"600","count":"10","szk":"aaa"},
            {"id":"15","itemName":"バナナ","user_id":"100001","pic":"http://localhost:8080/img/xiangjiao.jpg","price":"700","count":"1","szk":"aaa"}
        ]
    },
    { "buy_no":"20201014113653","arr":
        [
            {"id":"16","itemName":"トマト","user_id":"100001","pic":"http://localhost:8080/img/fanqie.jpg","price":"700","count":"10","szk":"aaa"}, 
            {"id":"17","itemName":"スイカ","user_id":"100001","pic":"http://localhost:8080/img/xigua.jpg","price":"600","count":"3","szk":"aaa"},
            {"id":"18","itemName":"モモ","user_id":"100001","pic":"http://localhost:8080/img/taozi.jpg","price":"700","count":"10","szk":"aaa"}
        ]
    }
]
  • 写回答

6条回答 默认 最新

  • _YuLF 2020-10-20 13:35
    关注

    实体类

    /**
     * @author YuLF
     * @version 1.0
     * @date 2020/10/20 13:00
     * 存储数据的实体类,为了方便我全都String
     */
    public class TestBean {
        private String  id;
        private String itemName;
        private String user_id;
        private String pic;
        private String price;
        private String count;
        private String buy_no;
        private String szk;
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getItemName() {
            return itemName;
        }
    
        public void setItemName(String itemName) {
            this.itemName = itemName;
        }
    
        public String getUser_id() {
            return user_id;
        }
    
        public void setUser_id(String user_id) {
            this.user_id = user_id;
        }
    
        public String getPic() {
            return pic;
        }
    
        public void setPic(String pic) {
            this.pic = pic;
        }
    
        public String getPrice() {
            return price;
        }
    
        public void setPrice(String price) {
            this.price = price;
        }
    
        public String getCount() {
            return count;
        }
    
        public void setCount(String count) {
            this.count = count;
        }
    
        public String getBuy_no() {
            return buy_no;
        }
    
        public void setBuy_no(String buy_no) {
            this.buy_no = buy_no;
        }
    
        public String getSzk() {
            return szk;
        }
    
        public void setSzk(String szk) {
            this.szk = szk;
        }
    
        @Override
        public String toString() {
            return "TestBean{" +
                    "id='" + id + '\'' +
                    ", itemName='" + itemName + '\'' +
                    ", user_id='" + user_id + '\'' +
                    ", pic='" + pic + '\'' +
                    ", price='" + price + '\'' +
                    ", count='" + count + '\'' +
                    ", buy_no='" + buy_no + '\'' +
                    ", szk='" + szk + '\'' +
                    '}';
        }
    }
    

    数据库字符串文件:

    [{
      "id": "34",
      "itemName": "1",
      "user_id": "100001",
      "pic": "http://localhost:8080/img/fanqie.jpg",
      "price": "700",
      "count": "15",
      "buy_no": "20201014150857",
      "szk": "aaa"
    },
      {
        "id": "3",
        "itemName": "2",
        "user_id": "100001",
        "pic": "http://localhost:8080/img/xigua.jpg",
        "price": "600",
        "count": "10",
        "buy_no": "20201014150857",
        "szk": "aaa"
      },
      {
        "id": "9",
        "itemName": "3",
        "user_id": "100001",
        "pic": "http://localhost:8080/img/qiezi.jpg",
        "price": "700",
        "count": "30",
        "buy_no": "20201014150857",
        "szk": "aaa"
      },
      {
        "id": "13",
        "itemName": "4",
        "user_id": "100001",
        "pic": "http://localhost:8080/img/juzi.jpg",
        "price": "700",
        "count": "14",
        "buy_no": "20201014150857",
        "szk": "aaa"
      },
      {
        "id": "3",
        "itemName": "5",
        "user_id": "100001",
        "pic": "http://localhost:8080/img/xigua.jpg",
        "price": "600",
        "count": "12",
        "buy_no": "20201014152727",
        "szk": "aaa"
      },
      {
        "id": "15",
        "itemName": "6",
        "user_id": "100001",
        "pic": "http://localhost:8080/img/fanqie.jpg",
        "price": "700",
        "count": "30",
        "buy_no": "20201014152727",
        "szk": "aaa"
      },
      {
        "id": "84",
        "itemName": "7",
        "user_id": "100001",
        "pic": "http://localhost:8080/img/taozi.jpg",
        "price": "700",
        "count": "18",
        "buy_no": "20201014152727",
        "szk": "aaa"
      },
      {
        "id": "54",
        "itemName": "8",
        "user_id": "100001",
        "pic": "http://localhost:8080/img/huanggua.jpg",
        "price": "600",
        "count": "109",
        "buy_no": "20201014152727",
        "szk": "aaa"
      },
      {
        "id": "22",
        "itemName": "9",
        "user_id": "100001",
        "pic": "http://localhost:8080/img/xigua.jpg",
        "price": "600",
        "count": "33",
        "buy_no": "20201014183740",
        "szk": "aaa"
      },
      {
        "id": "3",
        "itemName": "10",
        "user_id": "100001",
        "pic": "http://localhost:8080/img/xigua.jpg",
        "price": "600",
        "count": "3",
        "buy_no": "20201014183740",
        "szk": "aaa"
      },
      {
        "id": "1",
        "itemName": "11",
        "user_id": "100001",
        "pic": "http://localhost:8080/img/pinguo.jpg",
        "price": "600",
        "count": "30",
        "buy_no": "20201015144738",
        "szk": "aaa"
      },
      {
        "id": "76",
        "itemName": "12",
        "user_id": "100001",
        "pic": "http://localhost:8080/img/qiezi.jpg",
        "price": "700",
        "count": "30",
        "buy_no": "20201015144738",
        "szk": "aaa"
      },
      {
        "id": "72",
        "itemName": "13",
        "user_id": "100001",
        "pic": "http://localhost:8080/img/fanqie.jpg",
        "price": "700",
        "count": "3",
        "buy_no": "20201015190607",
        "szk": "aaa"
      },
      {
        "id": "88",
        "itemName": "14",
        "user_id": "100001",
        "pic": "http://localhost:8080/img/xigua.jpg",
        "price": "600",
        "count": "10",
        "buy_no": "20201015190607",
        "szk": "aaa"
      },
      {
        "id": "2",
        "itemName": "15",
        "user_id": "100001",
        "pic": "http://localhost:8080/img/xiangjiao.jpg",
        "price": "700",
        "count": "1",
        "buy_no": "20201015190607",
        "szk": "aaa"
      },
      {
        "id": "15",
        "itemName": "16",
        "user_id": "100001",
        "pic": "http://localhost:8080/img/fanqie.jpg",
        "price": "700",
        "count": "10",
        "buy_no": "20201014113653",
        "szk": "aaa"
      },
      {
        "id": "3",
        "itemName": "17",
        "user_id": "100001",
        "pic": "http://localhost:8080/img/xigua.jpg",
        "price": "600",
        "count": "3",
        "buy_no": "20201014113653",
        "szk": "aaa"
      },
      {
        "id": "36",
        "itemName": "18",
        "user_id": "100001",
        "pic": "http://localhost:8080/img/taozi.jpg",
        "price": "700",
        "count": "10",
        "buy_no": "20201014113653",
        "szk": "aaa"
      }
    ]
    

    转换类:

    /**
     * @author YuLF
     * @version 1.0
     * @date 2020/10/20 12:54
     */
    public class TestMain1 {
        public static void main(String[] args) throws IOException {
            //databasesJsonStr是搜索数据库返回的String结果,
            String databasesJsonStr = getJson();
            String newJson = regroupJson(databasesJsonStr);
            System.out.println(newJson);
        }
    
        /**
         * 传入你数据库的json串,返回你想要的json串
         * @param oldJson
         * @return
         */
        public static String regroupJson(String oldJson){
            //1.转换为json数组,把每一个json串单独取出来存储,方便后面的重新分组
            JSONArray jsonArray = JSON.parseArray(oldJson);
            List<TestBean> list = new ArrayList<>(jsonArray.size());
            //存储所有的buy_no 并去重
            Set<String> buy_noSet = new HashSet<>();
            for(int i =0;i<jsonArray.size();i++){
                TestBean bean = new TestBean();
                bean.setBuy_no(jsonArray.getJSONObject(i).getString("buy_no"));
                buy_noSet.add(bean.getBuy_no());
                bean.setCount(jsonArray.getJSONObject(i).getString("count"));
                bean.setId(jsonArray.getJSONObject(i).getString("id"));
                bean.setItemName(jsonArray.getJSONObject(i).getString("itemName"));
                bean.setPic(jsonArray.getJSONObject(i).getString("pic"));
                bean.setPrice(jsonArray.getJSONObject(i).getString("price"));
                bean.setSzk(jsonArray.getJSONObject(i).getString("szk"));
                bean.setUser_id(jsonArray.getJSONObject(i).getString("user_id"));
                list.add(bean);
            }
            //组装新json
            //新json串
            JSONArray newJson = new JSONArray();
            for(String buy_no : buy_noSet){
                //第二层json
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("buy_no",buy_no);
                //每一个数组
                JSONArray arr = new JSONArray();
                for(TestBean testBean : list){
                    if(testBean.getBuy_no().equals(buy_no)){
                        //每一个数组中的每一个值
                        JSONObject arrIndex = new JSONObject();
                        arrIndex.put("id",testBean.getId());
                        arrIndex.put("itemName",testBean.getItemName());
                        arrIndex.put("user_id",testBean.getUser_id());
                        arrIndex.put("pic",testBean.getPic());
                        arrIndex.put("price",testBean.getPrice());
                        arrIndex.put("count",testBean.getCount());
                        arrIndex.put("szk",testBean.getSzk());
                        arr.add(arrIndex);
                    }
                }
                jsonObject.put("arr",arr.toString());
                //每次组装一个 就添加进去一个
                newJson.add(jsonObject);
            }
            return newJson.toJSONString();
        }
    
        //模拟搜索数据库返回的String结果
        public static String getJson() throws IOException {
            FileInputStream in = new FileInputStream("D:/databases.json");
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
            StringBuilder builder = new StringBuilder();
            String line = "";
            while((line = bufferedReader.readLine())!=null){
                builder.append(line);
            }
            bufferedReader.close();
            in.close();
            return builder.toString();
        }
    }
    

    输出

    [{
        "arr": "[{\"itemName\":\"16\",\"user_id\":\"100001\",\"szk\":\"aaa\",\"price\":\"700\",\"count\":\"10\",\"id\":\"15\",\"pic\":\"http://localhost:8080/img/fanqie.jpg\"},{\"itemName\":\"17\",\"user_id\":\"100001\",\"szk\":\"aaa\",\"price\":\"600\",\"count\":\"3\",\"id\":\"3\",\"pic\":\"http://localhost:8080/img/xigua.jpg\"},{\"itemName\":\"18\",\"user_id\":\"100001\",\"szk\":\"aaa\",\"price\":\"700\",\"count\":\"10\",\"id\":\"36\",\"pic\":\"http://localhost:8080/img/taozi.jpg\"}]",
        "buy_no": "20201014113653"
    }, {
        "arr": "[{\"itemName\":\"13\",\"user_id\":\"100001\",\"szk\":\"aaa\",\"price\":\"700\",\"count\":\"3\",\"id\":\"72\",\"pic\":\"http://localhost:8080/img/fanqie.jpg\"},{\"itemName\":\"14\",\"user_id\":\"100001\",\"szk\":\"aaa\",\"price\":\"600\",\"count\":\"10\",\"id\":\"88\",\"pic\":\"http://localhost:8080/img/xigua.jpg\"},{\"itemName\":\"15\",\"user_id\":\"100001\",\"szk\":\"aaa\",\"price\":\"700\",\"count\":\"1\",\"id\":\"2\",\"pic\":\"http://localhost:8080/img/xiangjiao.jpg\"}]",
        "buy_no": "20201015190607"
    }, {
        "arr": "[{\"itemName\":\"9\",\"user_id\":\"100001\",\"szk\":\"aaa\",\"price\":\"600\",\"count\":\"33\",\"id\":\"22\",\"pic\":\"http://localhost:8080/img/xigua.jpg\"},{\"itemName\":\"10\",\"user_id\":\"100001\",\"szk\":\"aaa\",\"price\":\"600\",\"count\":\"3\",\"id\":\"3\",\"pic\":\"http://localhost:8080/img/xigua.jpg\"}]",
        "buy_no": "20201014183740"
    }, {
        "arr": "[{\"itemName\":\"1\",\"user_id\":\"100001\",\"szk\":\"aaa\",\"price\":\"700\",\"count\":\"15\",\"id\":\"34\",\"pic\":\"http://localhost:8080/img/fanqie.jpg\"},{\"itemName\":\"2\",\"user_id\":\"100001\",\"szk\":\"aaa\",\"price\":\"600\",\"count\":\"10\",\"id\":\"3\",\"pic\":\"http://localhost:8080/img/xigua.jpg\"},{\"itemName\":\"3\",\"user_id\":\"100001\",\"szk\":\"aaa\",\"price\":\"700\",\"count\":\"30\",\"id\":\"9\",\"pic\":\"http://localhost:8080/img/qiezi.jpg\"},{\"itemName\":\"4\",\"user_id\":\"100001\",\"szk\":\"aaa\",\"price\":\"700\",\"count\":\"14\",\"id\":\"13\",\"pic\":\"http://localhost:8080/img/juzi.jpg\"}]",
        "buy_no": "20201014150857"
    }, {
        "arr": "[{\"itemName\":\"11\",\"user_id\":\"100001\",\"szk\":\"aaa\",\"price\":\"600\",\"count\":\"30\",\"id\":\"1\",\"pic\":\"http://localhost:8080/img/pinguo.jpg\"},{\"itemName\":\"12\",\"user_id\":\"100001\",\"szk\":\"aaa\",\"price\":\"700\",\"count\":\"30\",\"id\":\"76\",\"pic\":\"http://localhost:8080/img/qiezi.jpg\"}]",
        "buy_no": "20201015144738"
    }, {
        "arr": "[{\"itemName\":\"5\",\"user_id\":\"100001\",\"szk\":\"aaa\",\"price\":\"600\",\"count\":\"12\",\"id\":\"3\",\"pic\":\"http://localhost:8080/img/xigua.jpg\"},{\"itemName\":\"6\",\"user_id\":\"100001\",\"szk\":\"aaa\",\"price\":\"700\",\"count\":\"30\",\"id\":\"15\",\"pic\":\"http://localhost:8080/img/fanqie.jpg\"},{\"itemName\":\"7\",\"user_id\":\"100001\",\"szk\":\"aaa\",\"price\":\"700\",\"count\":\"18\",\"id\":\"84\",\"pic\":\"http://localhost:8080/img/taozi.jpg\"},{\"itemName\":\"8\",\"user_id\":\"100001\",\"szk\":\"aaa\",\"price\":\"600\",\"count\":\"109\",\"id\":\"54\",\"pic\":\"http://localhost:8080/img/huanggua.jpg\"}]",
        "buy_no": "20201014152727"
    }]
    

    我用的是:

    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    

    阿里巴巴的fastjson做json转换

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么