使用json发送对象

时间:2011-05-31 15:01:16

标签: php json

是否建议在服务器和客户端之间使用json发送对象? 我应该只使用小写的属性,我应该使用对象还是数组?

更新:这个问题来找我,因为默认情况下php将关联数组编码为对象(解码后)

3 个答案:

答案 0 :(得分:5)

你应该创建一个数组,然后使用PHP的json_encode方法。如果值是大写或小写,则无关紧要。

$a = array(
  'Test' => 42,
  'example' => 'Testing'
);

echo json_encode($a); // {"Test":42,"example":"Testing"}

在PHP中解码时,将true作为第二个参数传递给json_decode,以将对象转换为数组。

$data = json_decode($json, true);

答案 1 :(得分:1)

这些都完全取决于你。

您的属性名称的大小写是一种编码风格问题。只要你保持一致就没关系 - 你的项目应该对这类事情有固定的标准。如果您尚未选择标准,我的建议是寻求可读性,这通常意味着小写或驼峰式。我会避免大写,我也会避免使用连字符或下划线,但这完全取决于你。

至于对象或数组之间的选择,归结为最适合所讨论数据的内容。如果它需要命名键,则使用JSON对象(即使用花括号和键:值对{'key':'value','key2':'value2'});如果没有,那么使用JSON数组(即使用方括号和值['value1','value2'])。选择完全取决于数据需要如何构建:两者在JSON中完全有效,并且两者都不比另一个好;只是用于不同的目的。

(当然,PHP没有区别 - 键控数据和索引数据都存储在PHP数组中,因此从PHP方面来说它完全没有区别。)

答案 2 :(得分:0)

命名约定不是标准化的,您可以使用您喜欢的任何内容。使用也是有效javascript标识符的名称并且不会与javascript关键字冲突是个好主意。对象与数组不是常规问题,而是意义之一。 JSON对象是键值集合,而数组是平面列表。这些是不同的东西,即使两者的语法在javascript中有些可互换,并且PHP可以使用相同的数据类型实现两者,您应该在设计中明确区分。如果是平面列表,请使用[]。如果它是键值的话,请使用{}。在PHP方面,只需使用两个数组:[]的数字索引数组,{}的关联数组。