1


2

PHPを使用して特定のJSONデータ(Firefoxのブックマークからエクスポート)を出力することは可能ですか?

これは私が今まで持っていたコードです、Firefoxが正しいUTF-8方法でそれをエクスポートしないのでそれはデータを再エンコードします。 ファイルの末尾から末尾も削除します。


var_dumpを使用して、データ全体とは別に出力を取得することができませんでした。

2 Answer


3


json_decode()がデコードできる間


失敗します

$ c = '{"title": ""、}';

最後の "empty"要素はパーサを捨てます。 それがまさに私のbookmarks.jsonのようなものです。

{"タイトル": ""、... "子供":[]}、]}

編集: json.orgはhttp://gggeek.altervista.org/sw/article_20061113.html[php jsonライブラリの比較]へのリンクです。 そしてそれらの比較チャートによれば。 zend jsonは、Firefoxのbookmark.jsonを解析できるはずです。 まだテストしていません。

edit2:どうしてそれをテストしないのですか…? はい、zend jsonは未変更のbookmarks.jsonを解析できます。

'Zend / Json.php'が必要です。

$ encodedValue = file_get_contents( 'Bookmarks 2009-05-24.json'); $ phpNative = Zend_Json :: decode($ encodedValue); var_dump($ phpNative);

版画

array(7){["title"] =>文字列(0) "" ["id"] =>
...
["子"] => array(0){}}}}


2


VolkerKが言うように、 +] + and `+} +`の両方の前にコンマを取り除く必要があります:

// ... row 7
// Remove the trailing comma because Firefox is lazy
$hFile = preg_replace('/,\s*([\]}])/m', '$1', $hFile);

// ... or using str_replace
$hFile = str_replace(',]', ']', str_replace(',}', '}', $hFile));

しかし、あなたがブックマークのURIにアクセスしようとしている方法(私はあなたがしようとしていることだと思います)はうまくいきません。

ファイルのフォーマット/スキーマを再確認してください。