वह डेटा जिसे आप MySQL
से खींच रहे हैं उचित नहीं है JSON
प्रारूप और युगल की एक सरणी में परिवर्तित नहीं किया जा सकता है। एक JSONArray
JSONObject
. का एक संग्रह है एस। अभी आपको वही मिल रहा है जो एक Array
प्रतीत होता है [9.32, 5.22, 10.201 ...] की तरह स्वरूपित
आपके पास एक JSONArray
होना चाहिए जिसमें JSONObjects
. है
points:[{1:9.32},{2:5.22}]
फिर आप JSONObjects
को निकाल सकते हैं JSONArray
. से और सीधे संख्या मानों तक पहुंचें
JSONArray points = new JSONArray(pointsString);
JSONObject firstPoint = points.getJSONObject(1);
double value = firstPoint.getDouble("1");
पूरे JSONArray
. पर चलने के लिए आप इसे आसानी से लूप में बदल सकते हैं मूल्यों का
अपडेट - PHP समस्याएं
आपकी स्ट्रिंग उचित JSON
में वापस नहीं आ रही है format क्योंकि आप पूरे परिणाम को डंप कर रहे हैं यदि आपकी क्वेरी एक ही सरणी में है। कुछ इस तरह का प्रयास करें:
$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);
मैं पहले इसका परीक्षण करूंगा लेकिन विचार यह है कि आपको JSONArray
क्या बनाना होगा और फिर इसमें छोटे आंतरिक सरणियाँ जोड़ें जो JSONObject
. बन जाएंगी . जब आप json_encode करते हैं कि आपके पास वस्तुओं के साथ एक सरणी [] होगी {डबल:some_number}। निकालने के लिए, आपको केवल JSONArray
. के माध्यम से लूप करना है और कुंजी मान डबल से जुड़े प्रत्येक डबल को प्राप्त करें। यह कुछ इस तरह काम करेगा:
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
}