Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.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.parse将数字键保留为字符串_Javascript_Json - Fatal编程技术网

Javascript JSON.parse将数字键保留为字符串

Javascript JSON.parse将数字键保留为字符串,javascript,json,Javascript,Json,我有一个JSON字符串,如下所示: {"2":"News 2","7":"News 7","4":"Recipe 4","6":"Recipe 6"} 数字是参考,顺序很重要 当我使用JSON.parse时,它假设数字是索引而不是键字符串,而不管引号是什么 如何成功地将此字符串转换为对象,同时保留项目的正确顺序 非常感谢您的帮助。您应该将其转换为JSONObjects的JSONArray 使用数组时,保留顺序 例如: [ {"2": "News 2"} , {"7": "News 7"}, {

我有一个JSON字符串,如下所示:

{"2":"News 2","7":"News 7","4":"Recipe 4","6":"Recipe 6"}
数字是参考,顺序很重要

当我使用JSON.parse时,它假设数字是索引而不是键字符串,而不管引号是什么

如何成功地将此字符串转换为对象,同时保留项目的正确顺序


非常感谢您的帮助。

您应该将其转换为
JSONObject
s的
JSONArray

使用数组时,保留顺序

例如:

[ {"2": "News 2"} , {"7": "News 7"}, {"4": "Recipe 4"}, {"6": "Recipe 6"} ]
但是,这不是用JSON表示数据的适当方式,相反,您应该这样做:

[{"id":"2","name":"News 2"}, {"id":"7","name":"News 7"},{"id":"4","name":"News 4"},{"id":"6","name":"News 6"}]
{
  elements: {"2":"News 2","7":"News 7","4":"Recipe 4","6":"Recipe 6"},
  elementOrder: ["2", "7", "4", "6"]
}

尽管由于json语法的原因需要在文档中以特定的顺序出现,但javascript对象中键的顺序尚未定义。JS引擎和版本之间的实现细节可以改变对象键的工作顺序。当顺序很重要时,应该使用数组

您可以为您的收藏选择许多形状来表示钥匙的顺序,但我会这样安排:

[{"id":"2","name":"News 2"}, {"id":"7","name":"News 7"},{"id":"4","name":"News 4"},{"id":"6","name":"News 6"}]
{
  elements: {"2":"News 2","7":"News 7","4":"Recipe 4","6":"Recipe 6"},
  elementOrder: ["2", "7", "4", "6"]
}
至于将密钥转换为数字,只要您使用数组进行排序,这实际上不是一个问题。您可以通过数字或字符串访问结果对象,这两种方式都可以

elements[2]
elements["2"] // both return "News 2"

对象没有顺序。如果您需要订单,请使用ArrayTanks!看来我需要一些PHP方面的处理来实现这一点。欢迎!是的,因为只要有json数组,最好里面的数据是一致的。在前面的例子中,在一个对象中我们有一个key=“2”,在另一个对象中我们有一个key=“7”,因此这种不一致性不是最好的方法。不管怎样,很高兴我能帮忙!