Javascript JSON中的重复键
如果给定的JSON包含重复的键,如何解析并显示错误。 parse只是忽略它&选择最后一个键值。另外,请告诉我是否有任何类型的npm库可用于相同的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
{
"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字符串中删除空白,然后解析并字符串化它&与字符串匹配(其中删除了空白)