Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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
Javascript JSON中的重复键_Javascript_Json - Fatal编程技术网

Javascript JSON中的重复键

Javascript JSON中的重复键,javascript,json,Javascript,Json,如果给定的JSON包含重复的键,如何解析并显示错误。 parse只是忽略它&选择最后一个键值。另外,请告诉我是否有任何类型的npm库可用于相同的 { "name":"mohit", "name":"verma" } 如果可以预测JSON的格式*,则可以将文本与解析和重新字符串化对象的结果进行比较: 请参阅下面的注释,了解失败案例的说明 const hasDuplicateKey=(j)=>{ 设k=JSON.stringify(JSON.parse(j)); 设h=JSON.st

如果给定的JSON包含重复的键,如何解析并显示错误。 parse只是忽略它&选择最后一个键值。另外,请告诉我是否有任何类型的npm库可用于相同的

{
  "name":"mohit",
  "name":"verma"
}

如果可以预测JSON的格式*,则可以将文本与解析和重新字符串化对象的结果进行比较:

  • 请参阅下面的注释,了解失败案例的说明
const hasDuplicateKey=(j)=>{
设k=JSON.stringify(JSON.parse(j));
设h=JSON.stringify(JSON.parse(j),null,“”);
返回!(j==h | | j==k);
};
让json1=`{“name”:“bob”,“name”:“alice”,“age”:7}`;
让json2=`{“name”:“bob”,“age”:7}`;
设json3=`{
“姓名”:“莫希特”,
“名称”:“verma”
}`;
设json4=`{
“姓名”:“莫希特”,
“年龄”:107
}`;
log(hasDuplicateKey(json1));
log(hasDuplicateKey(json2));
log(hasDuplicateKey(json3));

log(hasdepliceKey(json4))如果可以预测JSON的格式*,则可以将文本与解析和重新字符串化对象的结果进行比较:

  • 请参阅下面的注释,了解失败案例的说明
const hasDuplicateKey=(j)=>{
设k=JSON.stringify(JSON.parse(j));
设h=JSON.stringify(JSON.parse(j),null,“”);
返回!(j==h | | j==k);
};
让json1=`{“name”:“bob”,“name”:“alice”,“age”:7}`;
让json2=`{“name”:“bob”,“age”:7}`;
设json3=`{
“姓名”:“莫希特”,
“名称”:“verma”
}`;
设json4=`{
“姓名”:“莫希特”,
“年龄”:107
}`;
log(hasDuplicateKey(json1));
log(hasDuplicateKey(json2));
log(hasDuplicateKey(json3));

log(hasdepliceKey(json4))这很好,但是如果我得到带有重复键的json呢。即使是JSON.parse也不会抛出错误。新的重复键只会覆盖现有的一个。如果“系统”创建了这样一个讨厌的东西-这将是最简单的“修复”,遗憾的是,如果存在重复键,
JSON.parse
的参数似乎不会被多次调用。这很好,但是如果我得到了带有重复键的json呢。即使是JSON.parse也不会抛出错误。新的重复键只会覆盖现有的一个。如果“系统”创建了这样一个讨厌的东西,那将是最简单的“修复”。遗憾的是,如果存在重复键,
JSON.parse
参数似乎不会被多次调用。这不起作用。将JSON传递给parse,然后stringify将使空白等内容正常化。您有
k
h
来处理两组不同的归一化,但这只有在初始数据满足这些归一化模式时才起作用。将其中的一位更改为
让json2=
{“name”:“bob”,“age”:7}
(带有额外的空格)会出现误报。这就是为什么我用“如果你能预测JSON将如何格式化”来限定@code\u monk:如果你能“预测”JSON的格式化方式,它仍然必须遵循与
JSON.stringify
相同的格式化规则。那为什么不直接说呢?“如果JSON的格式与
JSON.stringify
产生的输出相同,…..”。这将在输入
{“a”:1,“1”:22}
时失败(至少在一些本机
JSON.parse/JSON.stringify
实现中,由于数字键排序的特殊规则)。您的“works with”条件太弱——它需要说明“如果保证
JSON.parse
的结果上的
JSON.stringify
JSON.parse
的原始输入完全相同”。但是,对于任何已知的JSON库,此条件都不成立。因此,这个解决方案最多只能在有限的情况下工作。我们可以从json字符串中删除空白,然后对其进行解析和字符串化,并与不起作用的字符串(其中删除了空白)进行匹配吗。将JSON传递给parse,然后stringify将使空白等内容正常化。您有
k
h
来处理两组不同的归一化,但这只有在初始数据满足这些归一化模式时才起作用。将其中的一位更改为
让json2=
{“name”:“bob”,“age”:7}
(带有额外的空格)会出现误报。这就是为什么我用“如果你能预测JSON将如何格式化”来限定@code\u monk:如果你能“预测”JSON的格式化方式,它仍然必须遵循与
JSON.stringify
相同的格式化规则。那为什么不直接说呢?“如果JSON的格式与
JSON.stringify
产生的输出相同,…..”。这将在输入
{“a”:1,“1”:22}
时失败(至少在一些本机
JSON.parse/JSON.stringify
实现中,由于数字键排序的特殊规则)。您的“works with”条件太弱——它需要说明“如果保证
JSON.parse
的结果上的
JSON.stringify
JSON.parse
的原始输入完全相同”。但是,对于任何已知的JSON库,此条件都不成立。因此,这个解决方案最多只能在有限的情况下工作。我们可以从json字符串中删除空白,然后解析并字符串化它&与字符串匹配(其中删除了空白)