【问题标题】:Escape an already encoded json string转义已编码的 json 字符串
【发布时间】:2014-09-09 17:00:59
【问题描述】:

目前我必须处理一些引号未正确转义的 json 字符串。字符串看起来像这样

{ "foo" : "hello my name is "michael"" }

在 JS/PHP 中是否有任何现实的机会可以在不手动操作的情况下转义值中的引号,以便我可以解析字符串?

【问题讨论】:

  • 这个字符串是怎么产生的?
  • json_encode() 所以我只能假设有一些“”在编码后转换回 " 的值中,这就是它们没有被转义的原因。
  • json_encode 会将" 转换为\"
  • 可能在页面上查看源码,可能真的是“

标签: javascript php json encode


【解决方案1】:

你没有为我们提供太多的工作,但看起来你正在以这种方式生成 json:

$userInput = $_GET['userInput'];
$json = '{ "foo" : "' . $userInput . '" }';

这很糟糕。以下是安全生成 json 的适当方法:

$outputData = array(
  "foo" => $_GET['userInput']
);
$json = json_encode($outputData);

在此处查看参考:http://php.net/manual/en/function.json-encode.php

至于您最初的问题,在 JS/PHP 中是否有任何现实的机会来逃避引号?不。假设字符串的“实际值”是一系列包含引号的段落,您知道,就像引用的延续,其中每个段落都以" 开头。不,这是无法修复的。

您需要修复 json 的 source。如果您从某个第三方服务获取该 json 字符串,您需要告诉他们他们发送给您的字符串是无效的 json

【讨论】:

    猜你喜欢
    • 2013-09-08
    • 2017-08-17
    • 2018-07-14
    • 2023-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多