2014-09-09 5 views
0

au moment où je dois travailler avec des chaînes json où les guillemets ne sont pas correctement échappés. Les cordes ressemble à ceÉchapper à une chaîne json déjà encodée

{ "foo" : "hello my name is "michael"" } 

Est-il possible réaliste JS/PHP pour échapper aux citations de la valeur sans le faire manuellement, donc je peux analyser la chaîne?

+0

Comment cette chaîne a été générée? –

+0

json_encode() donc je peux seulement supposer qu'il y avait quelques " dans la valeur qui a été reconvertie en "après l'encodage c'est pourquoi ils ne sont pas échappés" – paperboy

+0

json_encode convertira '" 'en' \ "'. –

Répondre

0

Vous ne nous avez pas fourni beaucoup de travailler avec, mais il semble que vous générez quelque chose JSON comme la façon suivante:

$userInput = $_GET['userInput']; 
$json = '{ "foo" : "' . $userInput . '" }'; 

C'est assez mauvais. Voici la façon appropriée pour générer le JSON en toute sécurité:

$outputData = array(
    "foo" => $_GET['userInput'] 
); 
$json = json_encode($outputData); 

Voir la référence ici: http://php.net/manual/en/function.json-encode.php

Quant à votre question initiale, est-il une chance réaliste de JS/PHP pour échapper aux citations? Supposons que la "valeur réelle" de la chaîne est une série de paragraphes contenant des guillemets, vous savez, comme une continuation d'une citation, où chaque paragraphe commence par ". Non, cela ne peut pas être réparé.

Vous devez corriger la source de votre json. Si vous obtenez cette chaîne json d'un service tiers, vous devez leur indiquer que les chaînes qu'ils vous envoient sont non valide json.

Questions connexes