Cannot deserialize the current JSON object (e.g. {"name":"value"})
Solution 1
You can't directly deserialize from your API response using JsonConvert.DeserializeObject.
Try this below code :
JObject jsonResponse = JObject.Parse(jsonString);
JObject objResponse = (JObject)jsonResponse["logInResult"];
Dictionary<string, JArray> _Data = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, JArray>>(objResponse.ToString());
Hope this will help you.
Solution 2
You should create the following classes in order to map your json data to actual classes.
public class LogInResult
{
public string Name { get; set; }
public string cityName { get; set; }
public string img { get; set; }
public string usrId { get; set; }
}
public class RootObject
{
public List<LogInResult> logInResult { get; set; }
}
You can then store the RootObject for further processing:
var result = JsonConvert.DeserializeObject<RootObject>(jsonString);
By using the getter for the list, you can get the list and iterate it as usual.
Solution 3
Your question seems to be a duplicate of: Using JsonConvert.DeserializeObject to deserialize Json to a C# POCO class
You are trying to deserialize your JSON object into an JSON array.
Store just the content of logInResult
into jsonString
, that is:
[{"Name":"yogesh singh","cityName":"","img":"DefaultImage\/D_Vp_Men.png","usrId":"374"}]
This of course assumes that you got your JClass
correct in the first place.
Samir Rawat
Updated on August 02, 2021Comments
-
Samir Rawat over 2 years
This is my JSON data
{ "logInResult": [ { "Name": "yogesh singh", "cityName": "", "img": "DefaultImage/D_Vp_Men.png", "usrId": "374" } ] }
and this is my code
public async Task<ActionResult> Index() { HttpClient webClient1 = new HttpClient(); Uri uri = new Uri("http://m.vinipost.com/service/userprofile.svc/[email protected]&pass=12345"); HttpResponseMessage response1; response1 = await webClient1.GetAsync(uri); var jsonString = await response1.Content.ReadAsStringAsync(); var _Data = JsonConvert.DeserializeObject<List<JClass>>(jsonString); foreach (JClass Student in _Data) { ViewBag.Message += Student.Name + ", "; } dynamic obj = JsonConvert.DeserializeObject(jsonString); ViewBag.Message += obj.data.Name; return View(); }
and the error is
Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[MvcSumit1.Models.JClass]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly. To fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object. Path 'logInResult', line 1, position 15.
-
Admin over 8 yearshey one question, what is ["logInResult"] ? used as string?
-
Krunal Mevada about 8 years@NathielPaulino "logInResult" is nothing but json string JArray key. For more clarification please see
"logInResult": [
in posted question. Hope you now clear. -
Lahib about 8 years@KrunalMevada This helped me with my project. Thanks. This should def. be marked as the answer.