Dữ liệu bạn đang lấy từ MySQL không đúng JSON định dạng và không thể được chuyển đổi thành một mảng gấp đôi. Một JSONArray là tập hợp của JSONObject S. Ngay bây giờ, bạn đang nhận được những gì có vẻ như là một Array có định dạng như [9.32, 5.22, 10.201 ...]
Những gì bạn nên có là một JSONArray chứa JSONObjects
points:[{1:9.32},{2:5.22}]
Sau đó, bạn có thể giải nén JSONObjects từ JSONArray và chỉ cần truy cập trực tiếp vào các giá trị số
JSONArray points = new JSONArray(pointsString);
JSONObject firstPoint = points.getJSONObject(1);
double value = firstPoint.getDouble("1");
bạn có thể dễ dàng chuyển đổi nó thành một vòng lặp để chạy trên toàn bộ JSONArray của các giá trị
Cập nhật - Sự cố PHP
Chuỗi của bạn không trở lại đúng JSON vì bạn đang kết xuất toàn bộ kết quả nếu truy vấn của bạn vào một mảng duy nhất. Hãy thử một cái gì đó như sau:
$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);
Tôi muốn kiểm tra điều đó trước nhưng ý tưởng là bạn cần tạo JSONArray và sau đó thêm vào đó các mảng bên trong nhỏ hơn sẽ trở thành JSONObject . Khi bạn json_encode, bạn sẽ có một mảng [] với các đối tượng {double:some_number}. Để giải nén, tất cả những gì bạn phải làm là lặp qua JSONArray và nhận mọi nhân đôi được liên kết với nhân đôi giá trị khóa. Nó sẽ hoạt động như thế này:
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
}