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 № 1Bene, 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)