这是我的JSON数据
{
"logInResult": [
{
"Name": "yogesh singh",
"cityName": "",
"img": "DefaultImage/D_Vp_Men.png",
"usrId": "374"
}
]
}
Run Code Online (Sandbox Code Playgroud)
这是我的代码
public async Task<ActionResult> Index()
{
HttpClient webClient1 = new HttpClient();
Uri uri = new Uri("http://m.vinipost.com/service/userprofile.svc/logIn?loginId=thyschauhan@gmail.com&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();
}
Run Code Online (Sandbox Code Playgroud)
而错误是
无法将当前JSON对象(例如{"name":"value"})反序列化为类型'System.Collections.Generic.List`1 [MvcSumit1.Models.JClass]',因为该类型需要JSON数组(例如[1, 2,3])正确反序列化.要修复此错误,请将JSON更改为JSON数组(例如[1,2,3])或更改反序列化类型,使其成为普通的.NET类型(例如,不是像整数这样的基本类型,而不是类似的集合类型可以从JSON对象反序列化的数组或List.JsonObjectAttribute也可以添加到类型中以强制它从JSON对象反序列化.路径'logInResult',第1行,第15位.
Kru*_*ada 12
您无法使用API直接从API响应中反序列化 JsonConvert.DeserializeObject.
试试以下代码:
JObject jsonResponse = JObject.Parse(jsonString);
JObject objResponse = (JObject)jsonResponse["logInResult"];
Dictionary<string, JArray> _Data = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, JArray>>(objResponse.ToString());
Run Code Online (Sandbox Code Playgroud)
希望这会帮助你.
您应该创建以下类,以便将json数据映射到实际的类.
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; }
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以存储RootObject以进行进一步处理:
var result = JsonConvert.DeserializeObject<RootObject>(jsonString);
Run Code Online (Sandbox Code Playgroud)
通过使用列表的getter,您可以获取列表并像往常一样迭代它.