我们将JSON输出添加到输出XML的现有API,以使MobileHTML集成更加容易。但是,我们的开发人员查询了JSON输出中出现的@attributes的使用。在JSON非标准或标准中使用@attributes?
我们原来的XML看起来像:
<markers>
<marker id="11906" latitude="52.226578"
...
等等JSON出来为:
callbackname({"marker":[{"@attributes":{"id":"11906","latitude":"52.226578"
....
我们的开发者表示:
“虽然 '@属性' 是合法的JSON,它似乎打破点符号,所以我不能调用数据。@属性。我可以调用数据['@属性'],所以有一个解决方法,但它似乎更安全避免使用@ -symbol,除非有充分的理由。“
的XML-> JSON(P)转换完成后使用:
$xmlObject = simplexml_load_string ($data);
$data = json_encode ($xmlObject);
我想使我们的API作为易于集成成为可能,因此,尽可能使用标准的东西。但是我们使用了原生的PHP json_encode函数,所以如果它做的是非标准的东西,我会感到很惊讶。
是否使用@attributes非标准?这基本上只是我们的API在使用<marker id..>
而不是<marker><id>
方面有点缺陷的问题?
'simplexml_load_string'函数非常*必须为XML属性使用无效的标识符。它选择的任何有效的Javascript标识符也将是一个有效的XML元素名称,因此可能在XML中遇到它正在转化为Javascript对象。该功能需要将这些属性分组到不会干扰子元素的地方。 – 2011-05-10 23:09:53
@Rob - 极好的一点,忘了提。这就是为什么自定义转换器可以解决这个问题(您可以手动选择不冲突的名称),但通用转换器不能。 – 2011-05-10 23:23:09