J'ai reçu une réponse de l'API qui est un tableau JSON.
Je veux le convertir en objet JSON correspondant afin que Material Table le reconnaisse.
La réponse de l'API -
Mais cela ne s'affiche pas dans le tableau.
Lorsque je crée manuellement l'objet Array comme ci-dessous, le tableau est rempli -
laissez ELEMENT_DATA = [
{"policyID": "119736", "state": "Rajasthan", "dummy": "no"},
{policyID: "119736", état: "Las Vegas", pays: "USA"}
];
console.log (ELEMENT_DATA);
TABLE est DYNAMIQUE . Je ne peux pas créer une classe prédéfinie pour cela.
3 Réponses :
UPDATE
let newArray = Object.keys(myArray).map(item=>{
return JSON.parse(myArray[item]);
})
Vous pouvez le faire en utilisant JSON.parse
function toJSON(input) {
var UNESCAPE_MAP = {
'\\"': '"',
"\\`": "`",
"\\'": "'"
};
var ML_ESCAPE_MAP = {
'\n': '\\n',
"\r": '\\r',
"\t": '\\t',
'"': '\\"'
};
function unescapeQuotes(r) {
return UNESCAPE_MAP[r] || r;
}
return input.replace(/`(?:\\.|[^`])*`|'(?:\\.|[^'])*'|"(?:\\.|[^"])*"|\/\*[^]*?\*\/|\/\/.*\n?/g, // pass 1: remove comments
function(s) {
if (s.charAt(0) == '/')
return '';
else
return s;
})
.replace(/(?:true|false|null)(?=[^\w_$]|$)|([a-zA-Z_$][\w_$]*)|`((?:\\.|[^`])*)`|'((?:\\.|[^'])*)'|"(?:\\.|[^"])*"|(,)(?=\s*[}\]])/g, // pass 2: requote
function(s, identifier, multilineQuote, singleQuote, lonelyComma) {
if (lonelyComma)
return '';
else if (identifier != null)
return '"' + identifier + '"';
else if (multilineQuote != null)
return '"' + multilineQuote.replace(/\\./g, unescapeQuotes).replace(/[\n\r\t"]/g, function(r) {
return ML_ESCAPE_MAP[r];
}) + '"';
else if (singleQuote != null)
return '"' + singleQuote.replace(/\\./g, unescapeQuotes).replace(/"/g, '\\"') + '"';
else
return s;
});
}
let array = [
"{state:Haryanaa, country:India}",
"{state:Goaa, country:India}"
];
let newarray = array.map(item => {
item = toJSON(item.replace(/"/g,"'"));
return JSON.parse(item);
});
console.log(newarray);alternative si vous utilisez php côté serveur, vous pouvez utiliser json_decode avant de l'encoder en json
ERREUR - core.js: 1673 ERROR SyntaxError: jetons inattendus dans JSON à la position 1
Merci pour l'effort - Mais je ne suis pas en mesure de comprendre pourquoi JSON.parse () échoue pour {state: Haryana, country: India}. Il devrait y avoir un moyen simple que je manque
Votre json est JSON sans guillemets et JSON.parse ne l'excepte pas
Absolument correct et votre solution fonctionne! Mais comment le citer est maintenant ce que je dois vérifier. J'utilise GSON lib de Google en Java. Si je le fais cité, cela devrait fonctionner !!!!
Avez-vous essayé de stocker les données directement sous forme de tableau?
*ngFor="let data of ELEMENT_DATA"
Si c'est le résultat des données, il s'agit en fait d'un élément de données JSON correct, il devrait donc fonctionner avec ceci en utilisant ceci dans votre structure HTML.
ELEMENT_DATA: any = []; this._endpoint.getData().subscribe(res => this.ELEMENT_DATA = res);
L'erreur semble être du côté du serveur, la chaîne sans guillemets sur votre résultat est une mauvaise chaîne JSON du service, utilisez-vous un générateur de chaîne renvoyer le JSON? Vérifiez le côté serveur de l'application.
avez-vous fait le côté serveur de l'application? Si tel est le cas, pouvez-vous partager la méthode ou la partie où vous générez le JSON?
Je l'ai corrigé côté serveur et cela me rend le tableau de JSON. Maintenant, je mappe chaque élément et fais le JSON.parse sur chaque élément ... Maintenant, je dois trouver un moyen de renvoyer un tableau d'objets JSON afin qu'il ne soit pas nécessaire d'analyser du côté client.
Eh bien, si vous avez corrigé le côté serveur, il devrait renvoyer un tableau JSON correct avec les guillemets pour que vous puissiez simplement utiliser un * ngFor dans votre application frontend
Le fait est que cela me donne un tableau JSON correctement cité et non un tableau d'objets JSON. Permettez-moi de contourner toutes les méthodes possibles pour qu'il y ait un minimum de code côté client.
vous pouvez faire comme ça, il écrit sur la console à partir de maintenant,
function convert() {
var data = [
"{policyID:119736,state:Rajasthan}",
"{policyID:149737,state:Haryana}"
];
var converted = data.map(d => {
var str = d.replace(/([a-zA-Z0-9-]+):([a-zA-Z0-9-]+)/g, "\"$1\":\"$2\"");
return JSON.parse(str);
});
console.log(converted);
}
S'il a créé le côté serveur de l'application, cela est la pire solution possible car cela encombre le code propre avec quelque chose qui ne devrait pas se produire en premier lieu.
La question posée était de savoir comment formater le json côté client, cela dépend si nous pouvons corriger côté serveur si vous avez du code avec vous d'autre
Pouvez-vous utiliser JSON.Parse pour cela?
Il donne une erreur pour JSON.parse
Quel genre d'erreur?
ERROR SyntaxError: jetons inattendus dans JSON à la position 1
Fournir une réponse API sous forme de code et non d'images