Data yang Anda ambil dari MySQL
tidak dalam JSON
yang benar format dan tidak dapat dikonversi ke array ganda. Sebuah JSONArray
adalah kumpulan JSONObject
s. Saat ini Anda mendapatkan apa yang tampak sebagai Array
tunggal diformat seperti [9.32, 5.22, 10.201 ... ]
Yang harus Anda miliki adalah JSONArray
yang berisi JSONObjects
points:[{1:9.32},{2:5.22}]
Anda kemudian dapat mengekstrak JSONObjects
dari JSONArray
dan cukup akses nilai angka secara langsung
JSONArray points = new JSONArray(pointsString);
JSONObject firstPoint = points.getJSONObject(1);
double value = firstPoint.getDouble("1");
anda dapat dengan mudah mengonversi ini menjadi loop untuk menjalankan seluruh JSONArray
dari nilai
Pembaruan - Masalah PHP
String Anda tidak kembali dalam JSON
yang tepat format karena Anda membuang seluruh hasil jika kueri Anda ke dalam satu larik. Coba sesuatu seperti ini:
$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);
Saya akan mengujinya terlebih dahulu tetapi idenya adalah Anda perlu membuat apa yang akan menjadi JSONArray
dan kemudian tambahkan ke dalamnya array dalam yang lebih kecil yang akan menjadi JSONObject
. Ketika Anda json_encode bahwa Anda akan memiliki array [] dengan objek {double:some_number}. Untuk mengekstrak, yang harus Anda lakukan adalah mengulang JSONArray
dan dapatkan setiap ganda yang terkait dengan nilai kunci ganda. Ini akan bekerja seperti ini:
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
}