如何将控制器从 rest api 获得的 json 数据传递给视图?
How to pass json Data that obtained from rest api from controller to view?
我创建了一个 wcf Rest 服务并使用我的 mvc 应用程序调用服务,Rest 服务正常工作并通过 url (http://localhost:56299/RestService.svc/List 获取 json 数据) 使用 HttpClient class,但无法访问控制器中的数据并传递给视图。
代码:-
{
*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 中的数据,但我无法进一步返回 json 变量 obj 中的数据,我将如何使用它?
下面的代码行,将您的 json 字符串反序列化为 object
。
var obj = JsonConvert.DeserializeObject(users);
相反,您应该将其反序列化为特定模型或对象,并将其作为模式发送到您的视图(假设您将定义一个名为 User
的 class,它与返回的 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);
为了解决这个问题,主要问题是在模型中声明的要访问的对象的名称 json。
Json 结构 {"GetAllUserResult":[{"City":"Pune","Name":"Ranjeet","id":1} ]}
为此,我制作了一个 List 类型的用户,模型为 class,命名为 GetAllUserResult,这是我的 json 结构的名称,它保存所有数据。
public List<User> GetAllUserResult { get; set; }
之后我使用模型对象
反序列化了json结构
var users = response.Content.ReadAsStringAsync().Result;
User obj = JsonConvert.DeserializeObject<User>(users);
并使用
访问数据
obj.GetAllUserResult[i].Id; // i is index
并在列表中获取该数据并传递给视图
这是我的方式。您可以咨询
Class 型号
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.
}
}
我创建了一个 wcf Rest 服务并使用我的 mvc 应用程序调用服务,Rest 服务正常工作并通过 url (http://localhost:56299/RestService.svc/List 获取 json 数据) 使用 HttpClient class,但无法访问控制器中的数据并传递给视图。
代码:-
{
*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 中的数据,但我无法进一步返回 json 变量 obj 中的数据,我将如何使用它?
下面的代码行,将您的 json 字符串反序列化为 object
。
var obj = JsonConvert.DeserializeObject(users);
相反,您应该将其反序列化为特定模型或对象,并将其作为模式发送到您的视图(假设您将定义一个名为 User
的 class,它与返回的 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);
为了解决这个问题,主要问题是在模型中声明的要访问的对象的名称 json。
Json 结构 {"GetAllUserResult":[{"City":"Pune","Name":"Ranjeet","id":1} ]}
为此,我制作了一个 List 类型的用户,模型为 class,命名为 GetAllUserResult,这是我的 json 结构的名称,它保存所有数据。
public List<User> GetAllUserResult { get; set; }
之后我使用模型对象
反序列化了json结构var users = response.Content.ReadAsStringAsync().Result;
User obj = JsonConvert.DeserializeObject<User>(users);
并使用
访问数据 obj.GetAllUserResult[i].Id; // i is index
并在列表中获取该数据并传递给视图
这是我的方式。您可以咨询
Class 型号
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.
}
}