繁体   English   中英

将XML数据解析为JSON

[英]Parse XML data to JSON

在我们的环境中,我们使用带有存储过程的MS SQL。 在这些过程中,我们以XML形式返回结果,并在需要时访问数据。

我正在向我们的第三方工具介绍一些图表,这些图表需要特定的格式才能进行操作,但我遇到了问题。

在此屏幕截图中,您可以看到结构看起来应该是什么样的,我可以很好地使用该插件。 问题在于SimpleXML如何处理单个结果集。

在此处输入图片说明

如下图所示,带有一个结果项,它不再格式化为数组。 问题在于,该插件希望在第一个示例中以该格式查找数据,但是当只有一个值时,它不会将其存储为数组。

在此处输入图片说明

从该图像可以看到, escalationTypes的数据集采用的数组格式不是下面的submittedByDepartment 在此处输入图片说明

我正在尝试使用SimpleXML找出是否可以解决此问题的根源。 这是带有解决方法的SimpleXML的常见问题吗?

UPDATE

这是我正在使用的XML对象的示例: http : //pastebin.com/uPh0m3qX

我不是100%清楚您所需的结构是什么,但是总的来说,直接从XML转换为JSON或反之亦然不是一个好主意。 两者都可以以多种方式表示数据,而您真正想要的是从一种数据中提取数据并将其转换为另一种数据。

请注意,这就是SimpleXML旨在帮助您的-它从不包含任何数组,但是为您提供了一个API ,可帮助您提取所需的数据。

如果我理解正确,则希望从每个dataset元素构建一个数组,并将其放入JSON中,因此需要以下内容:

foreach ( $xml->children() as $item_name => $item ) {
      foreach ( $item->dataset as $dataset ) {
             $json[$item_name]['dataset'] = (array)$dataset->attributes();
       }
}

请注意,如果只有一个项目要循环,则这些循环都不会有不同的行为。 SimpleXML根据使用方式而不是基于XML的外观来决定其行为类似于数组还是对象。

请注意,虽然您可以构建更通用的XML到数组(或XML到JSON)功能,但要使其始终提供任何输入所需的输出,则可能会花费更多时间,并且比编写特定的代码会导致难以调试的代码像上面的代码。

您可以通过在引用变量之前添加(数组)来将对象声明为数组。 (array)$wasobject

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM