脚本宝典收集整理的这篇文章主要介绍了php – json_encode为空XML标记创建空对象,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
编辑:
我不想从XML中删除这些标记,因为我没有特定标记的XML条目和此标记为空的XML条目之间存在差异.
编辑2:
样本输入:
<Family> <name>aaa</name> <adults>3</adults> <kids /> </Family>
孩子标签是空的
我想得到编码结果
Family[1].name = 'aaa'; Family[1].adults = 3; Family[1].kids = '';
我得到的是:
Family[1].name = 'aaa'; Family[1].adults = 3; Family[1].kids = Object(); //empty
EDIT3:
我的实现很简单:
用PHP
$xml = simplexml_load_file($filepath); echo json_encode($xml,JSON_NUMERIC_CHECK);
在JavaScript中
objJSON = $.parseJSON(xmlhttp.responseText); .... d["name"] = objJson.Family[i].name; d["adults"] = objJson.Family[i].adults; d["kids"] = objJson.Family[i].kids;
$xml = '<Family> <name>aaa</name> <adults>3</adults> <kids /> <sub> <tag>Nice </tag> <tag>Food </tag> <tag /> </sub> </Family>'; $xml = new SimpleXMLElement($xml); $json = json_encode($xml,JSON_NUMERIC_CHECK); $json = json_decode($json,true); var_dump($json); // Before filterEmptyArray($json); // <------ Filter Empty Array VAR_dump($json); // After
之前
array 'name' => string 'aaa' (length=3) 'adults' => int 3 'kids' => array <------------------- Empty Array empty 'sub' => array 'tag' => array 0 => string 'Nice ' (length=5) 1 => string 'Food ' (length=5) 2 => array ...
后
array 'name' => string 'aaa' (length=3) 'adults' => int 3 'kids' => string '' (length=0) <---------- String Conversion 'sub' => array 'tag' => array 0 => string 'Nice ' (length=5) 1 => string 'Food ' (length=5) 2 => string '' (length=0) <---------- Supports Recursion (2nd level)
使用的功能
function filterEmptyArray(array &$a) { foreach ( $a as $k => &$v ) { if (empty($v)) $a[$k] = ""; else is_array($v) AND filterEmptyArray($v); } }
以上是脚本宝典为你收集整理的php – json_encode为空XML标记创建空对象全部内容,希望文章能够帮你解决php – json_encode为空XML标记创建空对象所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。