【发布时间】:2016-04-29 22:19:03
【问题描述】:
编辑:我使用 json_decode 的原因是将它从 XML 获取到一个数组。
所以这是我的困境:
我访问一个返回 xml 的 API,然后将其转换为数组,如下所示:
public function convertXMLtoJSON($xml){
return json_decode(json_encode(simplexml_load_string($xml), true), true);
}
当我有单个项目时(例如:)[SINGLE ITEM XML]
<LineItem>
<field>hello</field>
</LineItem>
显示如下:[SINGLE ITEM ARRAY]
[LineItem] => Array(
[field] => hello
)
现在如果我有:[MULTI ITEM XML]
<LineItem>
<field>hello</field>
</LineItem>
<LineItem>
<field>hello part 2</field>
</LineItem>
我得到:[多项目数组]
[LineItem] => Array(
[0] => Array (
[field] => hello
)
[1] => Array (
[field] => hello part 2
)
)
我需要将第一个示例放在一个数组中,而不仅仅是它本身,因为区分两者太费时了。
【问题讨论】:
-
json_decode(json_encode(...))为什么? -
关于“太耗时”的观点,你可以
if ( count($arr) > 1) { // multiple elements } else { // single element } -
只需检查该值是否为数组。如果是,请将其拉开(或进行内爆);如果不是,则取值。 XML 到 JSON 的转换只会在有多个数组时将它们放入数组中。如果它每次都这样做,那么每个元素都会在一个数组中,那就更难看了。
-
坦率地说,将 XML 转换为 JSON 通常是个坏主意,确实应该避免。为什么不直接使用 SimpleXML 并使用面向对象的遍历来查找您的元素? JSON 是一个完全没有必要的步骤。
-
第二种情况你想要的格式是什么?请注意,数组必须有唯一的键。