1
votes

Impossible d'obtenir la valeur après l'analyse JSON

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 commentaires

Essayez ceci: const val1 = "{'a': '123'}"; . a doit ê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.


4 Réponses :


2
votes

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)


0 commentaires

0
votes
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

0 commentaires

0
votes

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".

 entrez la description de l'image ici

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.


0 commentaires

0
votes

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


0 commentaires