如何处理json字符串php中的反斜杠

如何处理json字符串php中的反斜杠,第1张

如何处理json字符串php中的反斜杠

答案在以下问题中:

$jsonEnpredString = json_enpre($object);echo $jsonEnpredString;// Result of echo being:// {"namespace":"myCompany\package\subpackage"}

您不必去除任何斜杠。反之。您必须将echo-ed文本表示为PHP源代码。

$yetAnotherObject = json_depre('{"namespace":"myCompany\package\subpackage"}');

反斜杠(

)是PHP和JSON中的特殊字符。两种语言都使用它来转义字符串中的特殊字符,并且为了在字符串中正确表示反斜杠,您必须在PHP和JSON中都给它加上另一个反斜杠。

让我们尝试在上面的字符串上完成PHP解析器的工作。在开放括号之后,它遇到一个用单引号引起来的字符串。在单引号字符串中需要转义两个特殊字符:撇号(

'
)和反斜杠(
)。尽管撇号总是需要转义,但PHP解释器是宽容的,只要不引起混淆,就允许使用未转义的反斜杠。但是,单引号字符串内反斜杠的正确表示形式是
\

传递给函数的字符串

json_depre()

{"namespace":"myCompany\package\subpackage"}

请注意,这是在运行时处理的字符的准确列表,而不是用PHP或任何其他语言表示的字符串。这些语言具有表示特殊字符的特殊规则。这只是纯文本。

上面的文字是通过函数解释的

json_depre()
,期望它是的一部分
JSON
JSON
这是一种小语言,它对字符串中的特殊字符进行编码有特殊的规则。反斜杠是这些字符之一,当它出现在字符串中时,必须在其前面加上另一个反斜杠。
JSON
不宽容
当遇到反斜杠时,始终将其视为字符串中下一个字符的转义字符。

json_depre()
在成功解析JSON表示形式后,您将它们传递给您创建的对象包含一个名为
namespace
的单个属性,其值为:

myCompanypackagesubpackage

再次注意,这是实际的字符串,而不是任何语言的表示形式。

什么地方出了错?

返回您的代码:

$yetAnotherObject = json_depre('{"namespace":"myCompany\package\subpackage"}');

PHP解析器使用PHP规则解释上述代码。它了解

json_depre()
必须以文本
{"namespace":"myCompanypackagesubpackage"}
作为参数来调用该函数。

json_depre()
使用其规则并尝试将上面的文本解释为JSON表示形式。引号(
"
myCompany
告诉它
"myCompanypackagesubpackage"
必须解析为字符串。之前的反斜杠
package
被解释为的转义字符,
p
p
不是JSON中字符串的有效转义序列。这就是为什么它拒绝继续并返回的原因
NULL



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5441403.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存