2017-05-08 53 views
0

我使用php foreach循環生成JSON字符串。 JSON數據如:使用php刪除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"} 
+6

取代最後,不要自己產生的JSON。根據需要創建數組,然後使用[json_encode](http://php.net/manual/en/function.json-encode.php)。這樣可以節省很多頭痛。 – aynber

+0

數據從API調用返回爲xml。並且我僅使用響應中的某些特定項目。因此,我正在手動執行此操作。 – mofidul

+0

@modiful:我根據你對XML的精確度編輯了我的回覆;)我認爲讓你的通用解析器/編碼器爲你做這件事情更好(它更可靠)。因此,只需使用xml_parse_into_struct解析,使用array_map提取相關數據(優於循環:°),然後使用json_encode將其編碼爲JSON。 –

回答

1

您可以使用strrpos獲取最後的',',然後將其設置爲''。

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

正如aynber所說,我認爲你最好不得不讓json_encode爲你生成JSON字符串。

首先使用xml_parse_into_struct解析來自您的API的XML響應。 然後,如果我很好地理解你在做什麼,我認爲你需要的是使用array_map來生成內部數組(包含記錄的數組),然後用一個鍵「記錄」創建一個關聯數組,最後讓json_encode爲您創建JSON :)

0

你可以用正則表達式
$jsonData = preg_replace("/,(?!.*,)/", "", $jsonData);

相關問題