php – json_encode为空XML标记创建空对象
发布时间:2020-12-13 16:47:55 所属栏目:PHP教程 来源:网络整理
导读:我有一个 XML文件,其中一些标签偶尔可能是空的.当我使用 PHP读取此文件并使用json_encode对其进行编码时,JSON会将所有空标记转换为空对象,而我更喜欢它们 – 空字符串.停止/避免此转换的最佳方法是什么? 编辑: 我不想从XML中删除这些标记,因为我没有特定标
我有一个
XML文件,其中一些标签偶尔可能是空的.当我使用
PHP读取此文件并使用json_encode对其进行编码时,JSON会将所有空标记转换为空对象,而我更喜欢它们 – 空字符串.停止/避免此转换的最佳方法是什么?
编辑: 编辑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); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |