我有多次调用许多RESTful服务。我在收到数据时使用本机PHP json_decode
转换为PHP,并在发送数据时使用json_encode
。
我担心的是,对于深度嵌套的数据,我最终会编写如下代码:
$interestType = $person['children'][$i]['interests'][$j]['type'];
这可能会变得非常混乱。我觉得在创建方法/实例变量环绕这些结构的对象时会有一些好处,这样我就可以做到:
$interestType = $person->getChild($i)->getInterest($j)->getType();
对我来说似乎更清楚,但实际上它并不简单。
使用本机PHP数组执行所有操作,并为每个REST资源编写包装类有什么好处?
我担心的是我必须编写自定义编码/解码函数来映射到这些包装器。
答案 0 :(得分:0)
我不熟悉PHP中对象的实现,但是阅读this blogpost about array vs object performance,似乎开销很小。所以我猜它归结为风格偏好。可以在此处找到对象转换器的简单(非嵌套)数组:
妥协,实施起来很简单:
<?php
$json = '{"a": [{"aa" : 11}, {"ab" : 12}],"b":2,"c":3,"d":4,"e":5}';
$o = json_decode($json); // plain object
$a = json_decode($json, true); // this will yield an array
echo $o->a[0]->aa;
?>
json_decode
接受一个可选参数,该参数确定提供的JSON是否转换为关联数组。如果不是($o
),那么你的语法就是一半。