我有一个非常奇怪的问题。我在输入中有一个json,其中有一些字段定义在pojo中。当我看到输出时,=符号被改变了:
原始字符串:
"body": "/opensearch/OpenSearch?searchTerms=productType:OL_2_WFR___%20OR%20OL_2_WRR___%20OR%20SL_2_WST___%20OR%20SR_2_WAT___&count=10"
flink产生的字符串:
"body": "/opensearch/OpenSearch?searchTermsu003dproductType:OL_2_WFR___%20OR%20OL_2_WRR___%20OR%20SL_2_WST___%20OR%20SR_2_WAT___u0026countu003d10"
有人知道如何解决这个问题吗?他们不是,不是真的。
根据JSON规范,如果字节0x09
(ASCII制表符)出现在JSON字符串中,或者如果字节序列0x5C 0x74
(字符t
)出现,或者如果序列0x5C 0x75 0x30 0x30 0x30 0x39
出现(字符u0009
),它们都意味着完全相同的东西:字符串中有一个字符,它是制表符。
如果你有这个问题,你的JSON库坏了。找个更好的。
很可能你的JSON库没有损坏,相反,要么[A]你正在比较原始JSON,要么试图使用正则表达式从原始JSON中检索信息。别再这样做了,这将是一场没完没了的"怪异"游行,因为你不应该这样做。有很多种方法可以让不同的JSON字符串表示相同的东西,或者[B]这里没有问题,你可以继续;您只是看到了差异,并且可以理解地认为这里存在差异,或者它会导致问题。
假设你不做一些愚蠢的事情,比如试图用正则表达式解析JSON或比较原始JSON,并假设这意味着与它的内容相关的任何事情,这将不是一个问题.
具体来说,u003d
和=
是相同的无论如何处理这个JSON决定用另一个意味着相同事情的序列替换一个序列,这是一个允许的操作。