2015-07-12 55 views
3

以下是我的代碼段的正常工作,我的查詢下面的代碼:如何使用外部JSON文件作爲數據源的WebAPI

型號:

namespace CVHub.Models 
{ 
    [DataContract] 
    public class Context 
    { 
     [DataMember] 
     public int sessionID { get; set; } 
     [DataMember] 
     public string Name { get; set; } 

     public static List <Context> Contexts= new List<Context> 
     { 

      new Context{sessionID=1,Name="Name1"}, 
      new Context {sessionID=2,Name="Name2"}, 
      new Context {sessionID=3,Name="Name3"} 
     }; 
    } 
} 

控制器:

namespace CVHub.Controllers 
{ 
    public class ContextController : ApiController 
    { 
     List<Context> items; 
     // GET api/values 
     public IEnumerable<Context> Get() 
     { 
      //return Context.Contexts; 
      return items; 
     } 
    } 
} 

問題:我想使用外部json文件(駐留在app_data文件夾中)來提供相同的數據而不是做new Context{sessionID=1,Name="Name1"}, 如何使用從json文件中讀取的數據?我對MVC和webApi非常陌生,所以如果專家可以發佈整個工作代碼或儘可能多的細節,這將會非常有幫助。

+0

所以,你不知道如何讀取文件?或者你不知道如何根據你閱讀的json來填充你的模型屬性? –

+0

我不知道如何使用從外部json文件讀取的數據填充模型屬性。 – onlynitins

回答

6

您可以將您的JSON文件加載到StringContent中返回HttpResponseMessage

public class JsonFileController : ApiController 
{ 
    public HttpResponseMessage Get() 
    { 
     var json = File.ReadAllText(Server.MapPath(@"~/App_Data/contexts.json"); 

     return new HttpResponseMessage() 
     { 
      Content = new StringContent(json, Encoding.UTF8, "application/json"), 
      StatusCode = HttpStatusCode.OK 
     }; 
    } 
} 

的App_Data/contexts.json

[ 
    { 
     "sessionId": 1, 
     "name": "name1" 
    }, 
    { 
     "sessionId": 2, 
     "name": "name2" 
    }, 
    { 
     "sessionId": 3, 
     "name": "name3" 
    } 
] 
+0

有趣,我會給它一個鏡頭。請讓我知道在這種情況下模型會是什麼樣子。 – onlynitins

+0

它會返回你的.json文件,所以你的.json文件中將會返回。所以這應該包含有效的json – Martin

+0

非常感謝你,你的解決方案爲我工作:) – onlynitins

相關問題