如何使用JMS序列化器在Symfony中取消对双引号的转义

我正在使用Symfony 3.4中的JMS序列化器(jms / serializer-bundle)将对象序列化为JSON。

对象包含一个名为 text 的属性,该属性是一个包含双引号的字符串值。 JMS序列化器在序列化时使用反斜杠转义所有双引号。因此,该字段在输出中看起来像这样:

"text": "<p>\"My concern is the President. It's not okay,it's horrible,\" he said.</p>"

这对于普通字符串是可以的,但是如果字符串包含json本身,则它将变为无效的json

"text": "[[{\"fid\":\"123456\",\"view_mode\":\"content\",\"attributes\":{\"height\":\"400\",\"width\":\"800\"}}]]"

如何在JSON序列化中不转义双引号?

liulei9ok 回答:如何使用JMS序列化器在Symfony中取消对双引号的转义

“ text”属性的值仍然是字符串或序列化json的字符串。这就是为什么它不使用引号。

一种解决方案是在序列化整个对象之前对json字符串进行反序列化,以使“文本”的值成为嵌套对象。

或者,您可以在反序列化之后在字符串上尝试stripcslashes

本文链接:https://www.f2er.com/3105639.html

大家都在问