为 URL 序列化的编码 JSON

本文关键字:编码 JSON 序列化 URL | 更新日期: 2023-09-27 18:31:54

我必须使用HTTP GET创建一个Web请求,并且必须在URL上添加使用所有参数序列化和编码的JSON。

但是当我对序列化对象进行编码时我遇到了问题,它们还编码了"{"和":"等符号

想知道我必须做什么才能对序列化对象进行编码,如下所示:

序列化对象:

{''"

名称":''"鲍勃''"}

使用 HttpUtility.Utility 编码,或者另一个编码器将编码所有符号:如 "{" ":"

"%7b%22Name%22%

3a%22Bob%22%2

我在寻找什么:

http://tmpserviceURL.test?parameters={%20%22Name%22:%20%22Bob%22}

为 URL 序列化的编码 JSON

@Ant P 是正确的:您希望对这些字符进行编码。 不对它们进行编码是一个坏主意。

HttpUtility.UrlEncode和其他类似的方法对{}:进行编码,因为它们必须按照统一资源定位器规范(RFC 1738)的第2.2节进行编码。

从第 2 页开始:

如果八位字节 [在 URL 内] 没有相应的图形,则必须对其进行编码 字符中的 US-ASCII 编码字符集,如果使用 对应字符不安全,或者对应字符 保留用于特定 URL 中的其他一些解释 方案。

该规范继续将:定义为"保留"字符集(在URL中具有特殊含义的字符),并将{}定义为"不安全"字符集(已知有时由网关和其他传输代理修改的字符)。

因此,简而言之,如果您在 URL 中发送未编码的这些字符,那么您可能会面临 URL 无法正确解释的风险,或者数据在到达目的地时被损坏。 它有时可能有效,但你不能指望它总是有效。

如果您真的觉得必须忽略 URL 规范,那么您将不得不滚动自己的不对这些特定字符进行编码的 URL 编码器。 我怀疑你会找到一个现成的编码器来让你做到这一点。