मैं एक विंडोज फोन 8.1 आवेदन स्थान पर काम कर रहा हूं। मुझे अपने एपीआई से जेसन डेटा प्राप्त हो रहा है। मेरे एपीआई रिटर्न डेटा है कि लगता है कि:जेसन रीडर से जॉब्जेक्ट पढ़ने में त्रुटि। वर्तमान जेसन रीडर आइटम एक ऑब्जेक्ट नहीं है: StartArray। पथ
[{
"country": "India",
"city": "Mall Road, Gurgaon",
"area": "Haryana",
"PLZ": "122002",
"street": "",
"house_no": "",
"POI": "",
"type": "17",
"phone": "",
"lng": 77.08972334861755,
"lat": 28.47930118040612,
"formatted_address": "Mall Road, Gurgaon 122002, Haryana, India"
},
{
"country": "India",
"city": "Mall Road, Kanpur",
"area": "Uttar Pradesh",
"PLZ": "208004",
"street": "",
"house_no": "",
"POI": "",
"type": "17",
"phone": "",
"lng": 80.35783410072327,
"lat": 26.46026740300029,
"formatted_address": "Mall Road, Kanpur 208004, Uttar Pradesh, India"
},
{
"country": "India",
"city": "Mall Road Area, Amritsar",
"area": "Punjab",
"PLZ": "143001",
"street": "",
"house_no": "",
"POI": "",
"type": "17",
"phone": "",
"lng": 74.87286686897278,
"lat": 31.64115178002094,
"formatted_address": "Mall Road Area, Amritsar 143001, Punjab, India"
},
{
"country": "India",
"city": "Vasant Kunj (Mall Road Kishan Garh), New Delhi",
"area": "Delhi",
"PLZ": "110070",
"street": "",
"house_no": "",
"POI": "",
"type": "18",
"phone": "",
"lng": 77.1434211730957,
"lat": 28.51363217008815,
"formatted_address": "Vasant Kunj (Mall Road Kishan Garh), New Delhi 110070, Delhi, India"
}]
मैं अपने JSON डेटा deserializing कर रहा हूँ और यह LocationData
नाम के एक वर्ग में डाल। जब मैं अपना कोड चलाता हूं, तो यह मुझे एक त्रुटि देता है:
Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray. Path
मैं गलत कहां जा रहा हूं? यहां मेरा कोड है:
private async void GetAPIData()
{
string _serviceUrl = "https://api.myweblinkapiprovider/v2&q=" + UserRequestedLocation;
HttpClient client = new HttpClient();
HttpResponseMessage responce = await client.GetAsync(new Uri(_serviceUrl));
if (responce.Content != null)
{
var respArray = JObject.Parse(await responce.Content.ReadAsStringAsync());
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.NullValueHandling = NullValueHandling.Ignore;
settings.MissingMemberHandling = MissingMemberHandling.Ignore;
var rcvdData = JsonConvert.DeserializeObject<LocationData>(respArray.ToString(), settings);
UpdateMapData(rcvdData);
UpdateTextData(rcvdData);
}
}
मैंने एक जेएरे का उपयोग करने की भी कोशिश की।
private async void GetAPIData()
{
string _serviceUrl = "https://api.myweblinkprovider.com/v3?fun=geocode&lic_key=MyKey" + UserRequestedLocation;
HttpClient client = new HttpClient();
HttpResponseMessage responce = await client.GetAsync(new Uri(_serviceUrl));
JArray arr = JArray.Parse(await responce.Content.ReadAsStringAsync());
foreach (JObject obj in arr.Children<JObject>())
{
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.NullValueHandling = NullValueHandling.Ignore;
settings.MissingMemberHandling = MissingMemberHandling.Ignore;
var rcvdData = JsonConvert.DeserializeObject<LocationData>(arr.ToString(), settings);
UpdateMapData(rcvdData);
UpdateTextData(rcvdData);
}
}
यह भी मुझे एक त्रुटि देता है: नीचे के रूप में मेरे कोड है
Cannot deserialize the current JSON array (e.g.
[1,2,3]
) into type'MMI_SpeechRecog.Model.LocationData'
because the type requires a JSON object (e.g.{"name":"value"}
) to deserialize correctly.
जवाब के लिए धन्यवाद का उपयोग कर पहला आइटम पार्स। मैं अलग-अलग विश्लेषण डेटा का उपयोग करूँगा। इस मामले में उसने 4 खोज मैचों के साथ जवाब दिया। मुझे उन्हें व्यक्तिगत रूप से प्रदर्शित करने की आवश्यकता है और फिर उपयोगकर्ता की वरीयता के आधार पर प्रत्येक के लिए पृष्ठभूमि को पूरा करने की आवश्यकता है। –
मुझे लगता है कि यदि आप सभी मामलों का समर्थन करना चाहते हैं तो आपको JToken का उपयोग करना चाहिए, यहां उनके स्रोत कोड देखें: http://www.jsonschemavalidator.net/ –