PHP:将XML转换成JSON格式并解析

7
我正在阅读一些代码,看到了下面这行:
 $obj = json_decode(json_encode($xml));

$xml是从simplexml_load_string获取的,所以我认为这行代码等价于:

$obj = $xml;

为什么似乎没有必要进行编码和解码?


如果将json_decode的第二个参数设置为true,这是一种将SimpleXMLElement转换为PHP数组的差不多好的方法。目前,它将其转换为stdClass,这几乎完全没有意义。 - iainn
2
实际上,为了返回一个关联数组而不是stdClass对象,json_decode需要设置第二个参数为true。除此之外,@iainn是正确的。 - Edmund Dantes
看起来这行代码相当于 $obj = $xml; — 如果你运行代码,你会发现这并不是真的;-) - Álvaro González
1个回答

10
如果$xml是一个SimpleXml对象,你无法直接访问它的某些属性。这是一种将SimpleXml对象转换为传统对象并访问其所有属性的技巧 :)
另外,你可以传递一个布尔参数来获取一个数组而不是对象:json_decode(json_encode($xml), true);

1
SimpleXML可能无法访问某些属性的情况是什么? - iainn
使用SimpleXml时,您需要像 $xml->getChildrens() 这样使用它类的方法,这只是一个技巧,可以避免花费时间搜索正确的函数,更容易像传统对象一样使用 $xml->myattributes。请参阅文档 http://php.net/manual/fr/book.simplexml.php。 - Fky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接