簡體   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