183 votes

Conversion d'une chaîne de caractères en objet JSON

Comment faire croire à JS qu'une chaîne de caractères est JSON ?

J'ai une fonction qui ne fonctionne que si un objet JSON lui est passé. Si je lui passe une chaîne de caractères au même format que JSON, elle ne fonctionne pas. Je veux donc faire croire à cette fonction que la chaîne qui lui est passée est un JSON. La chaîne est en effet au format JSON.

J'ai également essayé ce qui suit. J'ai saisi la chaîne via Ajax, avec le paramètre "handle as" à "JSON", et lorsque j'ai passé le résultat à la fonction, cela a fonctionné.

J'en déduis donc que le problème ne vient pas de la chaîne de caractères. Comment convertir cette chaîne en JSON ? Si j'obtiens la même chaîne par une requête ajax et que je la passe ensuite à la fonction, cela fonctionne, alors que la passer directement ne fonctionne pas.

La chaîne est la suivante :

  {
     "data": [
   {
  "id": "id1",
      "fields": [
        {
          "id": "name1",
          "label": "joker",
          "unit": "year"
        },
         {"id": "name2", "label": "Quantity"},
    ],
      "rows": [    data here....

and closing braces..

407voto

Kshitij Points 3176
var obj = JSON.parse(string);

string est votre chaîne json.

27voto

Sarfraz Points 168484

Vous pouvez utiliser le JSON.parse() pour cela.

Voir les documents sur MDN

Exemple :

var myObj = JSON.parse('{"p": 5}');
console.log(myObj);

6voto

Abraham Points 1

J'ai eu le même problème avec une corde similaire à la vôtre.

{id:1,field1:"someField"},{id:2,field1:"someOtherField"}

Le problème réside dans la structure de la chaîne. L'analyseur json ne reconnaissait pas qu'il devait créer 2 objets dans ce cas. Donc ce que j'ai fait est un peu idiot, j'ai juste re-structuré ma chaîne et j'ai ajouté l'élément [] L'analyseur syntaxique a ainsi reconnu

var myString = {id:1,field1:"someField"},{id:2,field1:"someOtherField"}
myString = '[' + myString +']'
var json = $.parseJSON(myString)

J'espère que cela vous aidera,

Si quelqu'un a une approche plus élégante, qu'il la partage.

5voto

sandeep patel Points 328
var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );

lien:-

http://api.jquery.com/jQuery.parseJSON/

4voto

Siyavash Hamdi Points 1895

Il suffit d'utiliser eval fonction.

var myJson = eval(theJsibStr);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X