Json数组排序|数组添加|文件上传

  • 对json数组排序
  • 数组元素按个添加内容
  • 文件上传

1.对json数组排序
如: 对下面的age排序

//排序前
{
"employees": [
    { "firstName":"John" , "lastName":"Doe","age":"20" },
    { "firstName":"Anna" , "lastName":"Smith" ,"age":"40"},
    { "firstName":"Peter" , "lastName":"Jones","age":"30" }
  ]
}
//排序后
{
"employees": [
    { "firstName":"John" , "lastName":"Doe","age":"20" },
    { "firstName":"Peter" , "lastName":"Jones","age":"30" },
    { "firstName":"Anna" , "lastName":"Smith" ,"age":"40"}
  ]
}
 public static void main(String[] args) {
       String srr="{\"employees\":[{\"firstName\":\"John\",\"lastName\":\"Doe\",\"age\":\"20\"},{\"firstName\":\"Anna\",\"lastName\":\"Smith\",\"age\":\"40\"},{\"firstName\":\"Peter\",\"lastName\":\"Jones\",\"age\":\"30\"}]}";
       JSONObject js= JSONObject.fromObject(srr);
       JSONArray array=js.optJSONArray("employees");
       //把array添加到list中
       List<JSONObject> jsValue=new ArrayList<JSONObject>();
       for (int i=0;i<array.size();i++){
           jsValue.add(array.getJSONObject(i));
       }
       //对list jsValue 排序
        Collections.sort(jsValue, new Comparator<JSONObject>() {
            private static final String key="age";
            @Override
            public int compare(JSONObject o1, JSONObject o2) {
                int i =Integer.parseInt(o1.optString(key));
                int j =Integer.parseInt(o2.optString(key));
                return i>j ? 1:-1;小到大排序
            }
        });
        //新建一个json数组 存储排序后的数据
        JSONArray sortArray =new JSONArray();
        for (int i = 0; i <array.size() ; i++) {
            sortArray.add(jsValue.get(i));
        }
        System.out.println(sortArray.toString());

    }

2.数组元素按个添加内容
如: 一段数据为 [“1”,”2”,”3”,”4”,”5”],往这个数组里面添加“0”,
使其变为[“01”,”02”,”03”,”04”,”05”].

 public static void main(String[] args) {
        String st="[\"1\",\"2\",\"3\",\"4\",\"5\"]";

        JSONArray jsonArray = JSONArray.fromObject(st);
        Object[]  objArr=jsonArray.toArray();
        List<Object> list = java.util.Arrays.asList(objArr);
        //定义一个数组存放数据 大小跟原来的一样
        String []  personalPhoto = new String[list.size()];
        //转为数组
        personalPhoto = list.toArray(personalPhoto);
        //添加的数据
        for (int i = 0; i < objArr.length; i++) {
            personalPhoto[i] = "0"+objArr[i].toString();
        }
        System.out.println(JSONArray.fromObject(personalPhoto).toString);
    }

3.文件上传

    Calendar cl = Calendar.getInstance();
    String monthStr = String.valueOf(cl.get(Calendar.MONTH) + 1);
    String yearStr = String.valueOf(cl.get(Calendar.YEAR));
    String dayStr = String.valueOf(cl.get(Calendar.DATE));
    String fileType = null;
    String rootPath = request.getRealPath("/");

    String filePath = "/upload/" + yearStr + "/" + monthStr + "/" + dayStr + "/";//设置存放的目录
    java.io.File destDir = new java.io.File(rootPath + filePath);
    //目录不存在 创建目录
    if (!destDir.exists()) {
        destDir.mkdirs();
    }
    DiskFileUpload fu = new DiskFileUpload();
    fu.setSizeMax(4 * 1024 * 1024);   // 设置允许用户上传文件大小,单位:字节
    fu.setSizeThreshold(409600);   // 设置最多只允许在内存中存储的数据,单位:字节
    //开始读取上传信息
    java.util.List fileItems = null;
    try {
        fileItems = fu.parseRequest(request);
    } catch (Exception e) {
    }
    Map<String,Object> map = new HashMap<String,Object>();
    try {
        Iterator iter = fileItems.iterator(); // 依次处理每个上传的文件
        String name = "";
        while (iter.hasNext()) {
            org.apache.commons.fileupload.FileItem item = (org.apache.commons.fileupload.FileItem) iter.next();// 忽略其他不是文件域的所有表单信息
            if (!item.isFormField()) {

                name = item.getName();//获取上传文件名,包括路径

                long size = item.getSize();
                if ((name == null || name.equals("")) && size == 0) continue;
                if(size>(4 * 1024 * 1024)){
                    map.put("success", false);
                    map.put("msg","图片大于4M");
                    out.print(JsonUtil.getJsonStringFromMap(map));
                    return;
                }
                //设置允许上传的格式
                String photoType = ".JPG.BMP.GIF.PNG.JPEG.jpg.bmp.gif.png.jpeg.";
                int lastFile = name.lastIndexOf(".");
                String filetype = name.substring(lastFile );

                if (photoType .indexOf(filetype + ".") == -1) {
                    String gender="你上传的图片 " + filetype + " 类型不合法!";
                    map.put("success", false);
                    map.put("msg",gender);
                    out.print(JsonUtil.getJsonStringFromMap(map));
                    return;
                }
                long mil = System.currentTimeMillis();
                filetype = ".jpg";
                name = mil + filetype;
                File fNew = new File(rootPath + filePath, name);
                try {
                    item.write(fNew);
                } catch (Exception e) {
                    map.put("success", false);
                    map.put("msg","");
                    out.print(JsonUtil.getJsonStringFromMap(map));
                    return;
                }
            }
        }
        name = filePath + name;
        map.put("success", true);
        map.put("msg", "");
        System.out.println(JsonUtil.getJsonStringFromMap(map));
        out.print(JsonUtil.getJsonStringFromMap(map));
        return;
    } catch (IOException e) {
        map.put("success", false);
        map.put("msg", "");
        out.print(JsonUtil.getJsonStringFromMap(map));
        return;
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值