如何清理数组以正确转换为json字符串

时间:2013-02-27 08:53:11

标签: php json

如何将数组正确转换为json字符串? 我从亚马逊,ebay,flickr和freebase获取数据,并且返回的一些数据不能安全地转换为json。

这是使用json_encode()

后我目前获得的json字符串

https://dl.dropbox.com/u/126688107/invalid_json.txt

我已经尝试使用addslashes()来避免双引号。但我也使用单引号获取字符串,所以我也使用str_replace("'", "\'", $string_with_single_quotes)

但我也得到了类似的东西:

"parent":null
"nodes":[]

我不知道它是否是一个有效的json。 我也得到addslashes()已经过火了:

It is the world\\\\\\'s

我需要的是一个可以指出我使json字符串无效的工具。 我尝试了这个http://sourceforge.net/projects/jsonschemaphpv/,但它似乎没有认识到有多个项目的json。它总是说它无效,因为我拥有的字符串包含在[]

有什么想法吗?

提前致谢!

更新

对于那些问我为什么认为这是无效的json的人。 我实际上是将json字符串保存到数据库中,当我检索它并使用json_decode($str, true)将其转换为数组时,它只返回NULL

1 个答案:

答案 0 :(得分:2)

您不需要为json_encode()执行任何特殊操作来输出有效的JSON。

您链接的“验证器”是检查输入是否有效JSON;它正在检查它是否与特定的“模式”匹配(这不是JSON真正具有的概念,并且验证器的正确性未知)。

在我看来,问题可能是你将JSON复制粘贴到插入换行符的东西中 - 这使得像JSONLint这样的工具会抱怨。