有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在创建JSON时,如何避免将相同的数据两次写入JSON

我需要一些建议。我建立了一个工具,可以对上传的图片进行图像操作,并保存结果。每次操作完成后,它都会在其文件夹中的JSON文件中创建一个条目。 因此,如果没有JSON,它会创建一个新的JSON,如果有JSON,它会附加信息。问题是,如果有人不小心添加了一个已经添加的图像,json会再次添加该信息

在这里发布的代码太多了,但如果有人在添加附件或其他东西之前对如何比较文件提出一些建议,我将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    “在这里发布的代码太多了”,所以我只想介绍一下基本方法:)

    如果退出应用程序后不再使用同一个文件夹,内存中的解决方案将起作用。如果按图片名称等属性计算重复项,则可以使用HashMap等简单解决方案

    HashMap<String,Boolean> hashMapImages = ...
    String newImageName = ...
    if (! hashMapImages.containsKey(newImageName)){
          hashMapImages.put(newImageName,true);
          //... append to JSON
    }
    

    如果你真的想要在内容中有不同的图片,你必须为你的图片设计一个哈希函数。例如,您可以使用一个哈希函数,它每隔256个像素对像素值求和。对于随机图像,获得一个独特的哈希值就足够了

    int pos = 0;
    long hashsum;
    while (pos< image.length){
         hashsum += image[pos];
         pos += 256;
    }
    long hashKey = hashsum % 65536; //for a 16 bit key
    

    如果您计划再次重复使用同一个文件夹,请构造一个额外的JSON文件,其中只包含键值(无论您选择使用哪个键)。解析这个JSON文件,并在添加之前检查是否有图像

    HashMap<String,Boolean> hashMapImages = loadFromJSONContentFolder();
        String key = getKey()
        if (! hashMapImages.containsKey(key)){
              hashMapImages.put(key,true);
              //... append to JSON
        }