如何在Json对象中处理双引号字符串?

时间:2016-08-04 09:05:01

标签: php json string preg-replace preg-match

所以我的系统有一个json编码的字符串,这是我无法触摸的原因。 见下文。

[{"item0":"sometext","item1":"sometext too but i have "quoted string" inside of me"}]

所以现在我的问题是,使用json_decode($json_array_above);给我NULL输出,因为它无法转换引用的字符串......

我尝试了一些preg_replace代码,但是太过于noob,无法找到如何替换引用的字符串并引入escape char,它看起来像这个\"quoted string\"。说真的,我无法理解带有这种情况的preg_replace ..在哪里你会发现json_encoded字符串里面出现了双qoute ..请赐教。

我在这里尝试了其他问题,但我的理解还不够。 另外,请注意我不能触及第一方系统提供的json对象的1编码。

TIA。

编辑: 感谢那些开导我的人...... 所以这是不可能的,我不得不放弃这个,并尝试联系系统开发人员来纠正他们提供的json编码字符串,因为它是最好的选择。

1 个答案:

答案 0 :(得分:2)

  

这是我无法触及的原因

然后你被塞满了。它已经坏了,你无法可靠地修复它。

  

我尝试了一些preg_replace代码

你不能。你无法知道"是否真的意味着终止字符串,或者意味着字符串中的字符

停止所有尝试解决此问题。最终发送您无效的JSON是问题所在。如果你不能触及"它,联系并指责可以解决问题的人。你可以把它作为一个教他们的机会,这就是为什么不用手工创建JSON,或用字符串连接创建它等等。相反,你构建一个结构,然后使用适当的JSON序列化器来创建JSON ,(在这种情况下)将放入必要的转义(反斜杠),使它看起来像这样:

[{"item0":"sometext","item1":"sometext too but i have \"quoted string\" inside of me"}]