Je rencontre un problème lors de la conversion de la valeur de la chaîne ci-dessous. J'ai essayé d'analyser JSON mais n'a pas fonctionné.
const val1 = "{a: '123'}";
console.log(typeof(val1)); // string
const a = JSON.parse(val1); // Gives Error: Unexpected token a in JSON at position 1
const b = JSON.parse(JSON.stringify(val1));
console.log(b); // {a: '123'}
console.log(b.a); // ---> undefined
console.log(typeof(b)); // string -> How?
Encore une fois si je le fais, JSON.parse (b) -> Donne une erreur: jeton inattendu a dans JSON à la position.
Peut quelqu'un suggère ce que je fais mal
4 Réponses :
Essayez ce qui suit
const jsonString1 = '{"a": "123"}';
const jsonString2 = "{\"a\": \"123\"}";
le problème est le guillemet simple dans votre chaîne json, voir ceci https://www.json.org/json-en.html
Vous pouvez utiliser ce qui suit
const jsonString = '{"a": "123"}';
const parsedJson = JSON.parse(jsonString);
console.log(parsedJson.a)
const val1 = "{a: '123'}";
const val2 = JSON.stringify(val1);
console.log( val2 ) // "{a: '123'}" ... its actually ""{a: '123'}""
console.log( typeof val2 ) // string
const val3 = JSON.parse(val2);
console.log( val3 ) // {a: '123'} ... its actually "{a: '123'}"
console.log( typeof val3 ) // string
Je pense que le problème est dans votre ligne # 4
JSON.stringify("{a: '123'}")Vous essayez d'analyser le résultat de
const b = JSON.parse(JSON.stringify(val1));
Cela produit une "chaîne à l'intérieur de la chaîne".
Comme la réponse précédente l'a suggéré, assurez-vous que votre format json est correct. Utilisez un outil tel que https://jsonlint.com/ pour vérifier votre json.
Le code ci-dessous a été modifié. Veuillez vérifier car cela fonctionne.
const val1 = '{"a": "123"}';
console.log(typeof(val1)); // string
const a = JSON.parse(val1); // a is a json now
const b = JSON.parse(JSON.stringify(val1)); //val1 is already is string so no need to do this
console.log(a); // {a: '123'}
console.log(a.a); // ---> changed to a
const c = JSON.parse(b);
console.log(typeof(b)); // string -> Double stringing but converting to json only once so its still a string
console.log(typeof(c)); // Have to do JSON.parse on b to make it a Object again
Essayez ceci:
const val1 = "{'a': '123'}";.adoit être placé entre guillemets simples.Mis à part les citations, le type de citations est également important. val1 doit être placé entre guillemets simples et les valeurs de clé json entre guillemets doubles. Alors essayez ceci:
const val1 = '{"a": "123"}';@LearningEveryday const val1 = '{"a": "123"}'; travaux. mais, je reçois une chaîne dans ce modèle du serveur.
Ajout d'une réponse avec explication, veuillez vérifier.