我做了一个wcf Rest服务,我使用我的mvc应用程序调用服务,Rest服务正常工作,并通过url (http://localhost:56299/RestService.svc/List)使用HttpClient类获取json数据,但无法访问控制器中的数据并传递给视图。
代码: -
{
*string apiurl = "http://localhost:56299/RestService.svc/List";
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(apiurl);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync(apiurl);
var users = response.Content.ReadAsStringAsync().Result;
var obj = JsonConvert.DeserializeObject(users);*
}
我以json格式成功获取var obj中的数据但是我无法在变量obj中返回json数据我将如何使用它?
答案 0 :(得分:0)
以下代码行,将您的json字符串反序列化为object
。
var obj = JsonConvert.DeserializeObject(users);
相反,您应该将其反序列化为特定的模型或对象,并将其作为模式发送到您的视图中(假设您将定义一个名为User
的类与返回的JSON结构匹配)
var model = JsonConvert.DeserializeObject<User>(users);
return view(model);
根据您发布的JSON结构{"City":"bkn","Name":"Mohit","id":5}
,您应该创建一个模型,如下所示
public class User
{
[jsonProperty(Name="Id")]
public int id {get; set;}
public string Name {get; set;}
public string City {get; set;}
}
然后您可以将其反序列化为IEnumerable<User>
var model = JsonConvert.DeserializeObject<List<User>>(users);
return view(model);
答案 1 :(得分:0)
为解决此问题,主要问题是在模型中声明的对象名称,以访问json。
Json Structure {&#34; GetAllUserResult&#34;:[{&#34; City&#34;:&#34; Pune&#34;,&#34; Name&#34;:&#34 ;兰吉特&#34;&#34; ID&#34;:1}]} 强>
为此,我创建了一个List类型的User,它是模型类,名为GetAllUserResult,它是包含所有数据的json结构的名称。
$watchlisticoncolor
之后我使用模型对象
反序列化了json结构public List<User> GetAllUserResult { get; set; }
使用
访问数据var users = response.Content.ReadAsStringAsync().Result;
User obj = JsonConvert.DeserializeObject<User>(users);
并在列表中获取该数据并传递给视图
答案 2 :(得分:0)
班级模型
public class CheckStatusModel
{
public int OBJID { get; set; }
public string SUPID { get; set; }
public string STATUSPTC { get; set; }
public int DATEACTIVESUP { get; set; }
}
public class CheckStatus
{
public List<CheckStatusModel> Data { get; set; } // data is an array so this needs to be some kind of collection
public string StatusCode { get; set; }
}
**发送使用查找web api REST服务资源的请求 HttpClient的****
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(Baseurl);
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(new
MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.PostAsJsonAsync("api/RPDeployment/BIL_CFP_BOX_CHECK_STATUSPTC", checkStatusParam);
if(response.IsSuccessStatusCode)
{
var EmpResponse = response.Content.ReadAsStringAsync().Result;
ListStatusPTC = JsonConvert.DeserializeObject<CheckStatus>(EmpResponse); // the JSON contains an object, so this needs to deserialize to an object. you can't deserialize to a list.
}
}