如何将控制器从 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.

       }
 }