php+生成空的json,php – json_encode为空XML标记创建空对象

我有一个XML文件,其中一些标签偶尔可能是空的.当我使用PHP读取此文件并使用json_encode对其进行编码时,JSON会将所有空标记转换为空对象,而我更喜欢它们 – 空字符串.停止/避免此转换的最佳方法是什么?

编辑:

我不想从XML中删除这些标记,因为我没有特定标记的XML条目和此标记为空的XML条目之间存在差异.

编辑2:

样本输入:

aaa

3

孩子标签是空的

我想得到编码结果

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 = '

aaa

3

Nice

Food

';

$xml = new SimpleXMLElement($xml);

$json = json_encode($xml, JSON_NUMERIC_CHECK);

$json = json_decode($json, true);

var_dump($json); // Before

filterEmptyArray($json); //

var_dump($json); // After

之前

array

'name' => string 'aaa' (length=3)

'adults' => int 3

'kids' =>

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)

'sub' =>

array

'tag' =>

array

0 => string 'Nice ' (length=5)

1 => string 'Food ' (length=5)

2 => string '' (length=0)

使用的功能

function filterEmptyArray(array &$a) {

foreach ( $a as $k => &$v ) {

if (empty($v))

$a[$k] = "";

else

is_array($v) AND filterEmptyArray($v);

}

}

标签:json,php,xml

来源: https://codeday.me/bug/20190629/1331131.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值