在创建JSON时,如何避免将相同的数据两次转换为JSON

时间:2016-03-17 15:03:46

标签: java json

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

这里发布的代码太多了,但如果有人就如何在追加之前比较文件或其他方面提出一些建议,我会感激不尽。

1 个答案:

答案 0 :(得分:0)

“它的代码太多了”,所以我只想制定方法基础:)。

如果您在退出应用程序后从未再次使用同一文件夹,则内存解决方案将起作用。如果您通过图片名称等属性计算重复项,那么您可以使用像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
    }