JS JSON没有被PHP json_decode解析

我在使用json_decode PHP函数解析JSON数据时遇到问题。 问题是我收到的JSON格式不正确。 它看起来如下:</ p>

 “{user:1,product:4,commentCount:1,comment:'一切都很好!干得好。'  ,commentDate:{year:2015,month:8,day:19},赞:8}“
</ code> </ pre>

当我尝试使用json_decode PHP函数解码此字符串时 我得到NULL。
是否可以使用preg_replace函数正确格式化此字符串</ p>

编辑:</ strong>
我在网上找到了这段代码,但它只包装了 引号中的变量名。 这些值仍然是原样,json_decode仍然返回NULL。</ p>

  //修复变量名
$ PHPJSON = preg_replace('/([a-zA-Z0-9_ ] +?):/','“$ 1”:',$ PHPJSON);
</ code> </ pre>
</ div>

展开原文

原文

I have an issue with parsing JSON data by json_decode PHP function. The issue is that the JSON I receive is not properly formatted. It looks as follows:

"{ user:1 ,product:4 ,commentCount: 1 ,comment:'All fine! Well done.' ,commentDate:{ year:2015 ,month:8 ,day:19 } , likes:8 }"

When I try to decode this string with json_decode PHP function I get NULL. Is it possible to properly format this string with a preg_replace function

EDIT: I found this code on the web but it only wraps the variable names in the quotes. The values are still as they were and json_decode still returns NULL.

// fix variable names
$PHPJSON = preg_replace( '/([a-zA-Z0-9_]+?):/' , '"$1":', $PHPJSON );

douzhi6365
douzhi6365 为这个特定的返回JSON字符串创建修复程序的问题是,它是否适用于我想从这个狡猾的来源获取的所有内容你是否介意从哪里获得它?
大约 5 年之前 回复
dongyaofu0599
dongyaofu0599 这就是我的期望,你应该至少告诉他们他们的错误,也许他们会解决它
大约 5 年之前 回复
dongzhi5587
dongzhi5587 我不创造它。我是从第三方收到的。在收到之前我无法更改它。
大约 5 年之前 回复
dqf60304
dqf60304 在Javascript中创建它的位置正确格式化
大约 5 年之前 回复
doulaozhang0238
doulaozhang0238 是的我知道。问题是,是否可以使用preg_replace正确格式化?
大约 5 年之前 回复
douzheng0702
douzheng0702 这不是一个有效的json
大约 5 年之前 回复

1个回答



格式错误的json的工作解决方案:</ p>

  $ json =“{user:  1,产品:4,评论数:1,评论:'一切都好!干得好。'  ,commentDate:{year:2015,month:8,day:19},赞:8}“; 

$ json = preg_replace('/(,| \ {)[\ t
] *(\ w + )[] *:[] * /','$ 1“$ 2”:',$ json);
$ json = preg_replace('/“:\'?([^ \ [] \ {}] * ?)\'?[
\ t] *(,“| } $ | ] $ | } ] | ] } | } | ])/','”:“$ 1”$ 2 ',$ json);

var_dump($ json);

var_dump(json_decode($ json));
</ code> </ pre>

但一般来说你需要 用双引号“arg”:1 </ code>包装对象参数。非数字值。就像这样:</ p>

  var_dump(json_decode('{“  user“:1}')); 
var_dump(json_last_error());
</ code> </ pre>

第二个函数返回错误的id,如果有的话。 n检查 php手册是否有错误代码识别</ p> \ n </ div>

展开原文

原文

Working solution for your malformed json:

$json = "{ user:1 ,product:4 ,commentCount: 1 ,comment:'All fine! Well done.' ,commentDate:{ year:2015 ,month:8 ,day:19 } , likes:8 }";

$json = preg_replace('/(,|\{)[ \t
]*(\w+)[ ]*:[ ]*/','$1"$2":',$json);
$json = preg_replace('/":\'?([^\[\]\{\}]*?)\'?[ 
\t]*(,"|\}$|\]$|\}\]|\]\}|\}|\])/','":"$1"$2',$json);

var_dump($json);

var_dump(json_decode($json));

But in general you need to wrap object param in double quotes "arg":1. Non-numeric values also. Just like this:

var_dump(json_decode('{"user":1}'));
var_dump(json_last_error());

The second function returns you id of an error, if there was any. Check the php manual for error codes identification

dongshengli6384
dongshengli6384 PS谢谢:)
大约 5 年之前 回复
dongyuji7309
dongyuji7309 哇! 我不知道它做了什么,但它的作用就像一个魅力!
大约 5 年之前 回复
drtj40036
drtj40036 你从我的回答中使用了preg_replace吗? 在PHP 5.4上工作得很好。
大约 5 年之前 回复
donglu5728
donglu5728 谢谢,但我已经检查过PHP手册。 问题仍然存在 - JSON仍然是错误格式化的。
大约 5 年之前 回复
douzhuo2722
douzhuo2722 多数民众赞成-1删除
大约 5 年之前 回复
dougua3706
dougua3706 用解决方案更新了我的答案
大约 5 年之前 回复
duanpengya7074
duanpengya7074 他知道JSON不是很好,这不是答案
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐