从服务器获取JSON时保留类型

时间:2012-12-07 18:20:38

标签: php jquery json

这是我的服务器端PHP脚本:

echo json_encode(
    array( 
        "1" => "foo",
        "2" => "bar"
    )
);

索引是字符串。

我通过$.ajax()使用jQuery获取此数组,并使用Chrome的开发人员工具,我可以看到它将索引解释为数值而不是字符串。

将JSON从服务器传递到客户端时,如何保留该字符串类型?或者,当将JSON数据从服务器传输到客户端时,类型的概念是否完全丢失?

2 个答案:

答案 0 :(得分:1)

字符串可以是数字和字符串,甚至是布尔值,这要归功于类型强制和鸭子打字(如果它看起来像是鸭子,散步和嘎嘎,它是鸭子),因为它们都是松散类型的语言。你应该像字符串一样处理它。

对于Chrome开发者工具,您的字符串只包含数字字符。因此,它也是一种数字数据类型(它看起来像一只鸭子")。

也许如果你解释一下,确切地说,你正在做的事情是不行的,我们可以用更好的方式帮助你。

答案 1 :(得分:0)

这是因为在PHP中,javaScript调用的对象是php中的数组。在JavaScript中,数组索引不能是字符串,它们必须是正整数。

如果您希望JavaScript将其解释为数组,请为其指定0索引并使索引成为整数而不是字符串。

您的代码已经完成了您希望它执行的操作。键是字符串。

http://jsfiddle.net/XC85h/

var jsonStr = '{"1":"foo","2":"bar"}';

var obj = JSON.parse(jsonStr);

for (key in obj) {
    console.log(typeof key, key); // string 1, string 2
}​

编辑(每条评论)
永远不要依赖JavaScript对象的排序顺序,它可能因浏览器而异。