Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 保留字符串的原始值并像json一样对其进行解码_Php_Json - Fatal编程技术网

Php 保留字符串的原始值并像json一样对其进行解码

Php 保留字符串的原始值并像json一样对其进行解码,php,json,Php,Json,我希望保留目标字段的原始值,并使用json_decode将以下字符串用作对象: { "translatorID": "f4a5876a-3e53-40e2-9032-d99a30d7a6fc", "label": "ACL", "creator": "Nathan Schneider", "target": "^https?://(www[.])?aclweb\\.org/anthology-new/[^#]+", "minVersion": "1.0.7

我希望保留目标字段的原始值,并使用json_decode将以下字符串用作对象:

{
    "translatorID": "f4a5876a-3e53-40e2-9032-d99a30d7a6fc",
    "label": "ACL",
    "creator": "Nathan Schneider",
    "target": "^https?://(www[.])?aclweb\\.org/anthology-new/[^#]+",
    "minVersion": "1.0.7",
    "maxVersion": "",
    "priority": 100,
    "browserSupport": "gcs",
    "inRepository": true,
    "translatorType": 4,
    "lastUpdated": "2012-01-01 01:42:16"
}

在使用
json\u decode
解析之前,您可以做的是:

$string = str_replace('\\', '\\\\\\\\', $string);
var_dump(json_decode($string, true));
这一定是json解析器中的错误。

方法不是很干净,但至少你得到了结果。

你试过去掉斜线吗

这对我很有用:

$string = '{
    "translatorID": "f4a5876a-3e53-40e2-9032-d99a30d7a6fc",
    "label": "ACL",
    "creator": "Nathan Schneider",
    "target": "^https?://(www[.])?aclweb\.org/anthology-new/[^#]+",
    "minVersion": "1.0.7",
    "maxVersion": "",
    "priority": 100,
    "browserSupport": "gcs",
    "inRepository": true,
    "translatorType": 4,
    "lastUpdated": "2012-01-01 01:42:16"
}';

var_dump( json_decode(stripslashes ($string)));

你是如何解码的,代码。你是如何得到JSON的?这对我来说很好:我确信不久前在另一个用户名下问了一个与此相同的问题。(编辑)它似乎已被删除。问题是-如果输入有那两个反斜杠,这很好,但如果在字符串中键入这两个反斜杠,它实际上是一个反斜杠,转义。。。要生成两个反斜杠,需要编写其中4个。在JSON中是无效的转义序列。甚至不会验证您现在拥有的JSON。您的早期版本带有两个斜杠(
\\.
)是可以的,但如果它位于PHP字符串中则不行。在这种情况下,您必须像我在演示中那样避开反斜杠。反斜杠是字符串中的转义字符,因此
“\\”
将产生
\.
,这在JSON中是无效的,正如前面提到的。我根据他的输入字符串进行了回答,替换后我得到了正确的结果。他的输入是有效的JSON,但如果他在代码中键入相同的字符串值,如果不从文件/db/中读取,那么他需要将反斜杠的数量增加一倍himself@Reza它返回NULL和任何其他组合。这改变了targetA的原始值。繁琐的解决方案可能是使用AddCslash和一些正则表达式来转义结果数组/对象上的stripslashes未替换的字符。