从JSON字符串中删除所有不必要的空格(在PHP中)

8

如何从JSON字符串(在PHP中)中删除所有不必要的空格?

我认为我需要使用preg_replace并使用一些聪明的正则表达式,以便不触动作为值一部分的空格。

一个简单的例子:

之前:{ "key": "value with whitespaces to maintain" }

之后:{"key":"value with whitespaces to maintain"}

基本上,我正在寻找一种尽可能紧凑地压缩字符串的方法,而不改变任何数据。


一种方法是解析JSON,然后使用自己的编码实现,这并不是很困难。 - Cthulhu
3个回答

22

很抱歉要说出这个显而易见的事实:

$before = '{ "key": "value with whitespaces to maintain" }';
$after  = json_encode(json_decode($before));

它实际上与您的示例完全匹配,参见$after:

{"key":"value with whitespaces to maintain"}

如果$before是数组或对象怎么办?嵌套函数调用似乎行不通... - Lukas
@Lukas:是的,如果$before不是JSON文本而是PHP数组或对象值,则无需嵌套函数调用,因为您只需要进行编码而不是解码:$after = json_encode($before);。就这样,希望对你有所帮助。 - hakre

5

1
非常好。我用它来清理GraphQL查询,然后将其发送到API。 - MoVod

0

PHP =>

语法: ltrim(string,charlist)

示例:

`$str = '{ "name" : " Test Subject" }';`
`$obj = json_decode($str);`
`$obj->name = ltrim($obj->name);`
`var_dump($obj);`

JS/jQuery =>

语法 : jQuery.trim( str )

示例 :

`var obj={ "name" : " Test Subject" };`
`console.log(obj);`
`obj["name"]=obj.name.trim(); // OR // obj.name.replace(/^\s+/,"");`
`console.log(obj);`

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接