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
}