【问题标题】:JSON.stringify and encodeuricomponentJSON.stringify 和 encodeuricomponent
【发布时间】:2014-01-13 11:36:06
【问题描述】:

我的 AJAX GET 请求字符串如下所示:

return domain + '?x=' + JSON.stringify(x)

是否需要使用encodeUriComponent 使 URI 有效?例如:

return domain + '?x=' + encodeURIComponent(JSON.stringify(x))

【问题讨论】:

  • 为什么投反对票并关闭?
  • @mplungjan:很可能该人投票决定关闭,因为这取决于给定的输入。该问题可以使用一些澄清,但如果没有评论,提问者将不知道应该做什么。除非问题真的很糟糕,否则人们不应该只是进行随机投票。
  • 不管怎样,这是假设你自己还没有逃脱,对吧?

标签: javascript


【解决方案1】:

JSON.stringify 不会转义字符,它只会返回字符串表示形式,当您在 url 中使用它时,您需要使用 encodeURIComponent 对其进行转义

【讨论】:

    【解决方案2】:

    是的。 JSON 表示为 text,您将其添加为 URI 的一个组件,因此您应该这样做。

    【讨论】:

      【解决方案3】:

      这是我通过阅读一些帖子和答案所理解的(请随时纠正我)

      JSON - JavaScript Object Notation

      • 当您有一个 JavaScript 对象并且想要将其转换为字符串(包含 JSON 文本)时,请使用 JSON.stringify。这称为序列化。
      • 当您希望将字符串(包含 JSON 文本)转换为 JavaScript 对象时使用 JSON.parse(例如,如果您从会话存储中获取包含 JSON 文本的字符串并且您想要将其转换为 JSON 并使用对象的某些字段)。这称为反序列化,与 JSON.stringify 相反。

      不管是 JSON:

      • 当您想在 URL 中发送“有问题的”字符(例如 &、% 等)时,请使用 encodeURIComponent。相反的是 decodeURIComponent。

      我在总结时使用了这些答案:

      Difference between JSON.stringify and JSON.parse

      difference between escape, encodeuri, encodeURIComponent

      【讨论】:

        【解决方案4】:

        可以在 url 中使用 rc4 编码(如果内容不太长,则使用 base64)然后在进程文件中解码

        【讨论】:

          猜你喜欢
          • 2014-10-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多