Wie lässt sich JS denken, dass eine Zeichenfolge JSON ist?
Ich habe eine Funktion, die nur funktioniert, wenn ein JSON-Objekt übergeben wird. Wenn ich einen String mit demselben Format wie JSON übergeben, funktioniert es nicht. Deshalb möchte ich, dass diese Funktion den Eindruck erweckt, dass der an sie übergebene String ein JSON ist. Die Zeichenfolge hat tatsächlich das JSON-Format.
Ich habe auch folgendes ausprobiert. Ich habe den String über Ajax eingegeben, mit dem Parameter "handle as" als "JSON", und als ich das Ergebnis an die Funktion übergeben habe, funktioniert es.
Ich habe daraus abgeleitet, dass das Problem nicht mit der Zeichenfolge zusammenhängt. Wie konvertiere ich diese Zeichenfolge in JSON? Wenn ich dieselbe Zeichenfolge durch eine ajax-Anfrage bekomme und sie dann an die Funktion weiterleitet, funktioniert sie, während die direkte Weitergabe nicht funktioniert.
Die Zeichenfolge lautet wie folgt:
{
"data": [
{
"id": "id1",
"fields": [
{
"id": "name1",
"label": "joker",
"unit": "year"
},
{"id": "name2", "label": "Quantity"},
],
"rows": [ data here....
and closing braces..
var obj = JSON.parse(string);
Dabei ist string
Ihre Json-Zeichenfolge.
Sie können dafür die Funktion JSON.parse()
verwenden.
Beispiel:
var myObj = JSON.parse('{"p": 5}');
console.log(myObj);
Ich hatte das gleiche Problem mit einer ähnlichen Saite wie Ihrer
{id:1,field1:"someField"},{id:2,field1:"someOtherField"}
Das Problem ist die Struktur der Zeichenfolge, die der Json-Parser nicht erkannt hat, dass er in diesem Fall zwei Objekte erstellen muss. Was ich also gemacht habe, ist irgendwie albern, ich habe einfach meine Zeichenkette neu strukturiert und den []
hinzugefügt, mit dem der Parser erkannt wurde
var myString = {id:1,field1:"someField"},{id:2,field1:"someOtherField"}
myString = '[' + myString +']'
var json = $.parseJSON(myString)
Ich hoffe es hilft,
Wenn jemand einen eleganteren Ansatz hat, teilen Sie ihn bitte.
var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );
verknüpfung:-
var Data=[{"id": "name2", "label": "Quantity"}]
Übergeben Sie die Stringvariable in Json parse:
Objdata= Json.parse(Data);
Verwenden Sie einfach die eval
-Funktion.
var myJson = eval(theJsibStr);
JSON.parse()
Funktion wird dies tun.
oder
Jquery verwenden,
var obj = jQuery.parseJSON( '{ "name": "Vinod" }' );
alert( obj.name === "Vinod" );
Nehmen wir an, Sie haben einen String
beispiel: "Name: lucy, Alter: 21, Geschlecht: weiblich"
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);
`