it-swarm.com.de

Konvertieren einer Zeichenfolge in ein JSON-Objekt

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..
132
Zer0
var obj = JSON.parse(string);

Dabei ist string Ihre Json-Zeichenfolge.

328
Kshitij

Sie können dafür die Funktion JSON.parse() verwenden.

Siehe Dokumente bei MDN

Beispiel:

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

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.

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

verknüpfung:-

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

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

Übergeben Sie die Stringvariable in Json parse:

Objdata= Json.parse(Data);
2

Verwenden Sie einfach die eval-Funktion.

var myJson = eval(theJsibStr);
2
Siyavash Hamdi

JSON.parse() Funktion wird dies tun.

oder

Jquery verwenden,

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

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);

`

0
shishir bondre