Comment faire croire à JS qu'une chaîne est JSON?
J'ai une fonction qui ne fonctionne que si un objet JSON lui est passé. Si je lui passe une chaîne, avec le même format que JSON, cela ne fonctionne pas. Je veux donc faire en sorte que cette fonction pense 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 entré la chaîne via Ajax, avec le paramètre "handle as" comme "JSON", puis quand j'ai passé le résultat à la fonction, cela fonctionne.
J'ai donc déduit que le problème ne venait pas de la chaîne. Comment convertir cette chaîne en JSON? Si j'obtiens la même chaîne via une requête ajax et que je la passe ensuite à la fonction fonctionne, 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..
la source
Réponses:
Où
string
est votre chaîne json.la source
Vous pouvez utiliser le
JSON.parse()
pour cela.Voir la documentation sur MDN
Exemple:
la source
J'ai eu le même problème avec une chaîne similaire comme la vôtre
Le problème ici est la structure de la chaîne. L'analyseur json ne reconnaissait pas qu'il avait besoin de créer 2 objets dans ce cas. Donc ce que j'ai fait est un peu idiot, j'ai juste restructuré ma chaîne et ajouté le
[]
avec ceci que l'analyseur a reconnuJ'espère que ça aide,
Si quelqu'un a une approche plus élégante, veuillez partager.
la source
myString
manière incorrecte. Ce n'est pas une chaîne et son format JSON est incorrect. Votre deuxième ligne deviendrait alors redondante. Voici ce que cela devrait être:var myString = '[{"id":1,"field1":"someField"},{"id":2,"field1":"someOtherField"}]'
je sais que c'est un article assez ancien, mais j'ai pensé ajouter un peu de clarté au cas où quelqu'un le trouverait.$.parseJSON
oùJSON.parse
ne fonctionnait pas et en lançant une erreurJSON.parse is not a function
lien:-
http://api.jquery.com/jQuery.parseJSON/
la source
convertir la chaîne en HashMap en utilisant Object Mapper ...
new ObjectMapper().readValue(string, Map.class);
La carte en interne se comportera comme un objet JSON
la source
Passez la variable de chaîne dans l'analyse Json:
la source
Data
est déjà un objet, il ne serait donc pas nécessaire de l'analyser. Vous auriez besoin de quelques guillemets entourant toutes vos données pour en faire une chaîne.Utilisez simplement la
eval
fonction.la source
JSON.parse()
la fonction fera l'affaire.ou
En utilisant Jquery,
la source
Considérons que vous avez une chaîne comme
exemple: "nom: lucy, âge: 21 ans, sexe: femme"
»
la source