清理错误的JSON

时间:2014-10-15 13:45:56

标签: php json

我从这样格式的WS中收到错误的JSON:

{
"name" : {"title": "This is my wrong title "b", and then.."}
}

显然,这是错的,json_decode在PHP中工作。 有没有人知道如何消毒该字符串并获得类似的东西:

{
"name" : {"title": "This is my wrong title \"b\", and then.."}
}

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题...找到了一个(PHP)解决方法,但它不是100%证明:

 preg_match_all('/: "[^,]*",|\}/', $data, $matches );

 if ( isset ($matches[0] ))
 {
    foreach( $matches[0] AS $match )
    {
       if ( substr_count( $match, '"') > 2 )
       {
          $data = str_replace( substr($match, 2, -2), addslashes( substr($match, 2, -2) ), $data );
       }
    }
    $arr = json_decode( $data, true );
 }

不幸的是,如果字符串包含逗号,则会失败...就像您的示例一样。 我希望有人能找到更好的解决方案,我对这个问题不太满意。