我有一個simpleXML對象,我必須將其轉換爲傳遞給AJAX的JSON。我的解決方案几乎總是工作和JSON返回的是這樣的一個:JSON編碼。強制一個項目始終是一個數組PHP
{
"error":false,
"data":{
"name":"C45",
"nParameters":"3",
"seed":"0",
"nOutput":"1",
"parameter":[
{
"name":"Podado",
"type":"list",
"domain":{
"item":[
"TRUE",
"FALSE"
]
},
"default":"TRUE",
"name_orig":"pruned"
},
{
"name":"Confianza",
"type":"real",
"domain":{
"lowerB":"0",
"upperB":"1"
},
"default":"0.25",
"name_orig":"confidence"
},
{
"name":"InstanciasPorHoja",
"type":"integer",
"default":"2",
"name_orig":"instancesPerLeaf"
}
]
}
}
正如你可以看到,有一個叫item
值。此項具有可變長度,當我在XML文件中出現問題時,標記item
僅作爲標記domain
的子項出現一次,因爲生成的JSON不會將值item
存儲爲JSON數組,因此我需要該值作爲JSON數組總是。所以我想要的是「強制」創建這樣一個數組。
對於parameter
我有同樣的問題,但我可以用這個代碼解決這個問題:
if ($parsedXML_actual->nParameters <= 1) {
$xmlArray = (array) $parsedXML_actual;
if ($parsedXML_actual->nParameters == 1) {
$a = array($parsedXML_actual->parameter);
} else {
$a = array();
}
$xmlArray['parameter'] = $a;
echo json_encode(array('error' => false, 'data' => $xmlArray));
}
我一直在試圖以同樣的方式適用於item
,但我無法找到要走的路(item
並不總是存在,你可以看到)
是否有任何可能的方式來做到這一點?
編輯1:這是我的源XML:
<algorithm_specification>
<name>C45</name>
<nParameters>3</nParameters>
<seed>0</seed>
<nOutput>1</nOutput>
<parameter>
<name>Podado</name>
<type>list</type>
<domain>
<item>TRUE</item>
<item>FALSE</item>
</domain>
<default>TRUE</default>
</parameter>
<parameter>
<name>Confianza</name>
<type>real</type>
<domain>
<lowerB>0</lowerB>
<upperB>1</upperB>
</domain>
<default>0.25</default>
</parameter>
<parameter>
<name>InstanciasPorHoja</name>
<type>integer</type>
<default>2</default>
</parameter>
</algorithm_specification>
正如你所看到的,值 「name_orig」 在JSON是讀和解析XML
什麼是你的XML輸入後添加? – Gavriel
你可以遍歷對象,但首先:你確定這是你需要修復'item'的地方嗎?當它不是數組時,你會得到什麼問題? – Shomz
@Gavriel在編輯1是源XML –