使用php从JSON字符串中删除最后一个逗号

时间:2017-05-08 15:50:04

标签: php json string

我正在使用php foreach循环生成JSON字符串。 JSON数据如:

$jsonData={"records":[{"name":"Apple iPhone 5S 16GB AT&T","sold":"265"},{"name":"Apple iPhone 4s 5c 8GB 16GB 32GB Factory Unlocked Sim Free Mobile Smartphone US","sold":"459"},{"name":"Apple iPhone 5S 16GB AT&T","sold":"265"},{"name":"Apple iPhone 5S 16GB AT&T","sold":"265"},{"name":"Apple iPhone 4s 5c 8GB 16GB 32GB Factory Unlocked Sim Free Mobile Smartphone US","sold":"459"},]}

我想从json数据中删除最后一个逗号。我正在使用substr_replace()方法。

$result=substr_replace($jsonData,'',-3);

问题是它删除了所有最后三个字符以及逗号。我只想删除逗号。

{"records":[{"name":"Apple iPhone 5S 16GB AT&T","sold":"265"},{"name":"Apple iPhone 4s 5c 8GB 16GB 32GB Factory Unlocked Sim Free Mobile Smartphone US","sold":"459"},{"name":"Apple iPhone 5S 16GB AT&T","sold":"265"},{"name":"Apple iPhone 5S 16GB AT&T","sold":"265"},{"name":"Apple iPhone 4s 5c 8GB 16GB 32GB Factory Unlocked Sim Free Mobile Smartphone US","sold":"459"}

4 个答案:

答案 0 :(得分:1)

您可以使用strrpos获取最后一个',然后将其设置为''。

$jsonData[strrpos($jsonData, ',')] = '';

答案 1 :(得分:0)

正如aynber所说,我认为你最好让json_encode为你生成JSON字符串。

首先使用xml_parse_into_struct来解析来自API的XML响应。 然后,如果我很清楚你正在做什么,我认为你需要的是使用array_map生成内部数组(包含记录的数组),然后使用一个键“记录”创建一个关联数组,最后让json_encode为你创建JSON:)

答案 2 :(得分:0)

您可以使用正则表达式替换上一个, $jsonData = preg_replace("/,(?!.*,)/", "", $jsonData);

答案 3 :(得分:0)

将此正则表达式与preg_replace

一起使用

$dirtyJson = '{a:1,b:2,c:[{x:1,y:2,}],}'

$normalizedJson = preg_replace(',(\s*})','$1',$dirtyJson);
$normalizedJson = preg_replace(',(\s*])','$1',$dirtyJson);