是否建议在服务器和客户端之间使用json发送对象? 我应该只使用小写的属性,我应该使用对象还是数组?
更新:这个问题来找我,因为默认情况下php将关联数组编码为对象(解码后)
答案 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方面,只需使用两个数组:[]
的数字索引数组,{}
的关联数组。