J'ai un fichier texte qui est formaté comme JSON, mais dans un format convivial d'impression/affichage et je veux convertir cette chaîne en JSON valide. Fondamentalement, je veux lire le fichier en utilisant PHP5 et appelez json_decode pour désérialiser la chaîne. Mais, json_decode n'est pas capable d'analyser la chaîne json "imprimable".Convertir JSON en format d'impression en JSON valide
Je reçois l'erreur 4 JSON non valide ou mal formé.
Il semble que quelqu'un d'autre avait un problème similaire que moi: PHP json_decode() returns NULL with valid JSON?
J'utilise notepad ++ pour écrire le fichier JSON.
Alors, comment puis-je convertir
DE:
{
"data": [
{
"thumbImg": "thumbImg",
"street": "street",
"city": "Fort Worth",
"state": "Texas",
"zip": "76192-0001",
"url": "url"
}
]
}
À:
{"data":[{"thumbImg": "thumbImg", "street": "street", "city": "Fort Worth", "state": "Texas", "zip": "76192-0001", "url": "url"}]
J'ai même essayé de faire ce qui suit:
<?php
$filename = "links.json";
$file = fopen($filename, "r");
$lines = file($filename);
$data = "";
;
foreach ($lines as $line_num => $line) {
$formatted = trim($line);
$formatted = str_replace("\r", "", $formatted);
$formatted = str_replace("\n", "", $formatted);
$data .= $formatted;
}
$json = json_decode($data, true);
?>
J'ai fait un var_dump de la chaîne json résultante et http://jsonlint.com/ l'a marqué comme valide json; cependant, json_decode n'est pas capable de désérialiser la chaîne json pour une raison quelconque.
Merci!
SOLUTION Je définis le codage du fichier texte sur UTF-8 sans nomenclature et cela fonctionne correctement maintenant. Merci à tous!
Les données parse sans problème pour moi. – Quentin
Cela fonctionne quand je lis à partir d'un fichier texte (sans me moquer de reformater le texte). On dirait que vous avez commencé avec "J'ai des problèmes à lire un fichier" mais vous avez fini par vous demander "Comment reformater ce fichier?", Qui est à plusieurs étapes du problème réel et qui a entraîné une question n'est utile à personne. – Quentin
'json_decode' fonctionne parfaitement pour moi: http://codepad.org/wcNFa2F5 Vous devriez essayer' file_get_contents' pour lire le fichier: http://php.net/manual/fr/function.file-get-contents.php –