2017-07-19 52 views
0

我做了一個wcf休息服務,並且使用我的mvc應用程序調用了服務,其餘服務正常工作,並通過使用HttpClient類的url http://localhost:56299/RestService.svc/List獲取json數據,但無法訪問控制器中的數據並傳遞到視圖。如何通過json從控制器的其餘api獲取數據來查看?

代碼: -

{ 
*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);* 
} 

我在VAR OBJ成功地獲得的數據以JSON格式,但進一步的我無法OBJ如何我將使用變量返回的JSON數據?

+0

你必須創建模型視圖,反序列化的Web API REST服務資源json數據添加到此模型並將其傳遞到您的視圖。顯示json結構來幫助你更好 –

+0

我做到了,但是這樣做只返回一條記錄,屬性值爲null,但用戶有多條記錄 – niteshkumarmodi

+0

Json Structure {「GetAllUserResult」:[{「City」:「Pune」, 「名稱」: 「蘭吉特」, 「ID」:1},{ 「城市」: 「孟買」, 「姓名」: 「阿密特」, 「ID」:2},{ 「城市」: 「齋浦爾」,「名稱「:」Nitesh「,」id「:3},{」City「:」bkn「,」Name「:」Mohit「,」id「:5}]} – niteshkumarmodi

回答

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); 
+0

我仍然沒有收到所有記錄,返回只有一個記錄 – niteshkumarmodi

+0

@niteshkumarmodi,請參閱如果有幫助編輯 – Rahul

+0

我無法解析引用jsonProperty @Rahul – niteshkumarmodi

0

爲了解決這個問題,主要問題是,在模型中聲明的訪問JSON對象的名稱。

JSON結構{ 「GetAllUserResult」:[{ 「城市」: 「浦」, 「姓名」: 「蘭吉特」, 「ID」:1}]}

爲此,我做了一個作爲模型類的User的列表類型,名爲GetAllUserResult,它是我的json結構的名稱,它保存所有數據。

public List<User> GetAllUserResult { get; set; } 

後,我用使用

obj.GetAllUserResult[i].Id; // i is index 

,並獲得在列表中的數據,並通過模型對象

var users = response.Content.ReadAsStringAsync().Result; 

User obj = JsonConvert.DeserializeObject<User>(users); 

和訪問數據,查看

0

這是反序列化JSON結構我的方式。您可以諮詢

級車型

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; } 
} 

**發送請求,查找使用 的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. 

     } 
} 
相關問題