【问题标题】:Encoding JSON serialized for URL编码为 URL 序列化的 JSON
【发布时间】:2014-11-24 13:31:41
【问题描述】:

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

但是当我对序列化对象进行编码时,我遇到了一个问题,它们还会编码像“{”和“:”这样的符号

我想知道我必须做什么才能像上面那样对序列化对象进行编码:

序列化对象:

{\"姓名\":\"鲍勃\"}

编码 使用 HttpUtility.Utility,或其他编码器将对所有符号进行编码:如“{”“:”

"%7b%22Name%22%3a%22Bob%22%2

我在寻找什么:

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

【问题讨论】:

  • 想要对这些字符进行编码。
  • ty Ant,我不想编码“{”和“:”

标签: c# asp.net-mvc json serialization url-encoding


【解决方案1】:

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

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

从第 2 页开始:

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

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

因此,简而言之,如果您在 URL 中发送这些未编码的字符,那么您就有可能无法正确解释 URL,或者数据在到达目的地时被损坏。它有时可能会起作用,但你不能依赖它一直在起作用。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多