3

json_decodeを使用して、コンマ付きの単語と二重引用符付きの単語を含むjsonをデコードしようとしています。

{"wordsFont":"Times New Roman","nameList":["Overflow ,","Stack ""]}

json_decodeが失敗するので、次のような関数を使用して引用符をエスケープするように文字列をフォーマットしようとしました。

function fixDoubleQuotedJSON($broken_json)
{
   return str_replace('""','\""',$broken_json);
}

ただし、単語の末尾にコンマと二重引用符がある場合のみです。そして結果:

{"wordsFont":"Times New Roman","nameList":["Overflow \,","Stack \""]}

正しくデコードしますが、二重引用符とコンマを配置する場合は、それを行う方法を見つける必要があります。助言がありますか?

編集:これはデータベースの初期値です:

{\"wordsFont\":\"Times New Roman\",\"nameList\":[\"Overflow ,\",\"Stack \\\"\"]}

そして、それを生成するコードをデータベースに変更することはできません

4

1 に答える 1

3

私の問題は、stripslashes()をurldecode()に置き換えることで修正されました。これは、誰かが以前にurlencode()を使用したために発生しました。

$jsonFix = urldecode($json);
$json = json_decode($jsonFix, true);
于 2012-09-24T20:34:23.990 に答える