De gegevens die u ophaalt uit MySQL
bevindt zich niet in de juiste JSON
formaat en kan niet worden geconverteerd naar een array van doubles. Een JSONArray
is een verzameling van JSONObject
s. Op dit moment krijg je wat lijkt op een enkele Array
geformatteerd als [9.32, 5.22, 10.201 ... ]
Wat je zou moeten hebben is een JSONArray
die JSONObjects
. bevat
points:[{1:9.32},{2:5.22}]
Je zou dan de JSONObjects
. kunnen extraheren van de JSONArray
en krijg eenvoudig rechtstreeks toegang tot de getalwaarden
JSONArray points = new JSONArray(pointsString);
JSONObject firstPoint = points.getJSONObject(1);
double value = firstPoint.getDouble("1");
je kunt dit eenvoudig converteren naar een lus om over een hele JSONArray
te lopen van waarden
Update - PHP-problemen
Je string komt niet terug in de juiste JSON
formaat omdat u het volledige resultaat dumpt als uw query in een enkele array wordt opgeslagen. Probeer zoiets als dit:
$outerObject = array();
$result = $query->fetchAll(PDO::FETCH_ASSOC);
$numResult = count($result);
for($i = 0; $i < $numResult; $i++){
$indexDouble = result[$i];
$innerObject = array();
$innerObject['double'] = $indexDouble;
$outerObject[] = $innerObject;
}
$json = array();
$json['metoxes'] = $outerObject;
echo json_encode($json);
Ik zou dat eerst testen, maar het idee is dat je moet maken wat de JSONArray
zal zijn en voeg er dan kleinere binnenarrays aan toe die het JSONObject
worden . Wanneer u dat json_encodeert, heeft u een array [] met objecten {double:some_number}. Om uit te pakken, hoef je alleen maar door de JSONArray
te gaan en krijg elk dubbel geassocieerd met sleutelwaarde dubbel. Het zou ongeveer als volgt werken:
JSONArray fullArray = JSONArray(stringInput);
int length = fullArray.length;
for(int i = 0; i < length; i++){
double target = fullArray.getJSONObject(i).getDouble("double");
//do something with the double
}