我正在使用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"}
答案 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);