/ / Impossibile analizzare l'errore di stringa JSON nel mio progetto Phonegap: javascript, android, json, cordova

Impossibile analizzare l'errore di stringa JSON nel mio progetto Phonegap: javascript, android, json, cordova

Sto avendo problemi durante l'acquisizione di JSON da PHP. Il codice in basso è funzionante:

[{
"vehicleId": "1",
"status": "Running",
"position": "x",
"battery": "25",
"distanceTravelled": "123",
"destination": "y",
"freeSeats": "2",
"speed": "32"
}
]

Ma, la mia nuova versione del mio codice è arrivata così (senza virgolette nei valori numerici) e dà un errore JSE di analisi e non mostra nulla.

[{
"vehicleId": 1,
"status": "Running",
"position": "x",
"battery": 25,
"distanceTravelled": 123,
"destination": "y",
"freeSeats": 2,
"speed": 32
}
]

Ho controllato il formato su jsonlint.com ed è valido. L'errore nel log in Eclipse è:

05-09 21:37:25.536: E/Web Console(336): SyntaxError: Unable to parse JSON string at file:///android_asset/www/MobileMan.js:37

34  xmlhttp.open("GET",url,false);
35  xmlhttp.send();
36  var json = xmlhttp.responseText;
37  obj = JSON.parse(json);

Ho anche provato il codice Javascript nel mio computer su Chrome e tutto funziona perfettamente. Non ho potuto risolvere il problema, grazie per le tue risposte

risposte:

0 per risposta № 1

Bene, se il parser genera un errore, significa che il valore fornito per analizzare non è un oggetto JSON puro.

Di JSON.parse

  • JSON.parse - Analizza una stringa come JSON, eventualmente trasformando il valore prodotto dall'analisi. Se la stringa da analizzare non è JSON valida, viene generata un'eccezione SyntaxError.

D'altra parte, circa JSON.stringify

  • JSON.stringify - Convertire un valore in JSON, sostituendo facoltativamente i valori se viene specificata una funzione di replacer o facoltativamente includendo solo le proprietà specificate se viene specificato un array di replacer.

Quindi, nel tuo caso, devi prima convertire il risultato ottenuto in un oggetto JSON e poi provare ad analizzarlo.

a = [{
"vehicleId": 1,
"status": "Running",
"position": "x",
"battery": 25,
"distanceTravelled": 123,
"destination": "y",
"freeSeats": 2,
"speed": 32
}
];

var b = JSON.stringify(a);
var c = JSON.parse(b);
console.log(c)