web-dev-qa-db-fra.com

Conversion d'une chaîne en objet JSON

Comment faites-vous croire à JS qu'une chaîne est JSON?

J'ai une fonction qui ne fonctionne que si un objet JSON lui est transmis. Si je lui passe une chaîne, au même format que JSON, cela ne fonctionnera pas. Je souhaite donc que cette fonction pense que la chaîne qui lui est transmise est un JSON. La chaîne est bien au format JSON.

J'ai aussi essayé le suivant. J'ai saisi la chaîne via Ajax, avec le paramètre "handle as" comme "JSON", puis lorsque je transmettais le résultat à la fonction, cela fonctionnait.

Donc, j'ai déduit que le problème n'est pas avec la chaîne. Comment convertir cette chaîne en JSON? Si j'obtiens la même chaîne via une requête ajax puis que je la passe à une fonction, alors que la transmission directe 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..
132
Zer0
var obj = JSON.parse(string);

string est votre chaîne json.

328
Kshitij

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

Voir la documentation sur MDN

Exemple:

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

J'ai eu le même problème avec une chaîne similaire à la tienne

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

Le problème, c’est la structure de la chaîne que l’analyseur JSON ne reconnaissait pas qu’il fallait 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 ajouté le [] avec l’analyseur reconnu 

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

J'espère que ça aide,

Si quelqu'un a une approche plus élégante, partagez s'il vous plaît.

7
Abraham
var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );

lien:-

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

6
sandeep patel
var Data=[{"id": "name2", "label": "Quantity"}]

Passez la variable string dans Json parse:

Objdata= Json.parse(Data);
2

Utilisez simplement la fonction eval.

var myJson = eval(theJsibStr);
2
Siyavash Hamdi

JSON.parse() function fera l'affaire.

ou

En utilisant Jquery,

var obj = jQuery.parseJSON( '{ "name": "Vinod" }' );
alert( obj.name === "Vinod" );
0
Vinod Selvin

Considérons que vous avez une chaîne comme 

exemple: "nom: lucy, age: 21 ans, genre: femme"

function getJsonData(query){
    let arrayOfKeyValues = query.split(',');
    let modifiedArray =  new Array();
    console.log(arrayOfKeyValues);
    for(let i=0;i< arrayOfKeyValues.length;i++){
        let arrayValues = arrayOfKeyValues[i].split(':');
        let arrayString ='"'+arrayValues[0]+'"'+':'+'"'+arrayValues[1]+'"';
        modifiedArray.Push(arrayString);
    }
    let jsonDataString = '{'+modifiedArray.toString()+'}';
    let jsonData = JSON.parse(jsonDataString);
    console.log(jsonData);
    console.log(typeof jsonData);
    return jsonData;
}

let query = "name:lucy,age:21,gender:female";
let response = getJsonData(query);
console.log(response);

`

0
shishir bondre