Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在创建JSON时,如何避免将相同的数据两次写入JSON_Java_Json - Fatal编程技术网

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

Java 在创建JSON时,如何避免将相同的数据两次写入JSON,java,json,Java,Json,我需要一些建议。我已经建立了一个工具,可以对上传的图片进行图像操作并保存结果。每次操作完成后,它都会在其文件夹中的JSON文件中创建一个条目。 因此,如果没有JSON,它会创建一个新的JSON,如果有JSON,它会附加信息。问题是,如果有人意外地添加了一个已经添加的图像,json会再次添加该信息 在这里发布的代码太多了,但是如果有人在添加附件或其他东西之前对如何比较文件提出一些建议,我将不胜感激。“在这里发布的代码太多了”,所以我只想介绍一下基本方法:) 如果退出应用程序后不再使用同一文件夹,内

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

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

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

如果退出应用程序后不再使用同一文件夹,内存中的解决方案将起作用。如果您通过一个属性(如picture name)来计算重复项,那么您可以使用一个简单的解决方案(如HashMap)

HashMap<String,Boolean> hashMapImages = ...
String newImageName = ...
if (! hashMapImages.containsKey(newImageName)){
      hashMapImages.put(newImageName,true);
      //... append to JSON
}
HashMap hashMapImages=。。。
字符串newImageName=。。。
如果(!hashMapImages.containsKey(newImageName)){
hashMapImages.put(newImageName,true);
//…附加到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
int pos=0;
长哈希和;
while(位置<图像长度){
hashsum+=图像[pos];
pos+=256;
}
长hashKey=hashsum%65536//对于16位密钥
如果您计划再次重用同一个文件夹,请构造一个仅包含键值的附加JSON文件(无论您选择使用哪个键)。在附加之前,解析此JSON文件并检查是否有图像

HashMap<String,Boolean> hashMapImages = loadFromJSONContentFolder();
    String key = getKey()
    if (! hashMapImages.containsKey(key)){
          hashMapImages.put(key,true);
          //... append to JSON
    }
HashMap hashMapImages=loadFromJSONContentFolder();
String key=getKey()
如果(!hashMapImages.containsKey(键)){
hashMapImages.put(key,true);
//…附加到JSON
}
“在这里发布的代码太多了”,所以我只想介绍一下方法的基本原理:)

如果退出应用程序后不再使用同一文件夹,内存中的解决方案将起作用。如果您通过一个属性(如picture name)来计算重复项,那么您可以使用一个简单的解决方案(如HashMap)

HashMap<String,Boolean> hashMapImages = ...
String newImageName = ...
if (! hashMapImages.containsKey(newImageName)){
      hashMapImages.put(newImageName,true);
      //... append to JSON
}
HashMap hashMapImages=。。。
字符串newImageName=。。。
如果(!hashMapImages.containsKey(newImageName)){
hashMapImages.put(newImageName,true);
//…附加到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
int pos=0;
长哈希和;
while(位置<图像长度){
hashsum+=图像[pos];
pos+=256;
}
长hashKey=hashsum%65536//对于16位密钥
如果您计划再次重用同一个文件夹,请构造一个仅包含键值的附加JSON文件(无论您选择使用哪个键)。在附加之前,解析此JSON文件并检查是否有图像

HashMap<String,Boolean> hashMapImages = loadFromJSONContentFolder();
    String key = getKey()
    if (! hashMapImages.containsKey(key)){
          hashMapImages.put(key,true);
          //... append to JSON
    }
HashMap hashMapImages=loadFromJSONContentFolder();
String key=getKey()
如果(!hashMapImages.containsKey(键)){
hashMapImages.put(key,true);
//…附加到JSON
}

散列文件内容,比较散列字符串?我没有正确解释。每个json都是多个操作的结果:一个操作用于添加图像属性,另一个操作用于从json模式添加比例信息。所以我认为比较散列字符串是行不通的,对吗?谢谢散列文件内容,比较散列字符串?我没有正确解释。每个json都是多个操作的结果:一个操作用于添加图像属性,另一个操作用于从json模式添加比例信息。所以我认为比较散列字符串是行不通的,对吗?谢谢