如何转换ASP ?. NET WebAPI调用,返回JSON到列表中
本文关键字:返回 调用 JSON 列表 WebAPI NET 何转换 转换 ASP | 更新日期: 2023-09-27 18:03:17
在我的服务器上,我尝试了这个测试代码:
[AllowAnonymous]
[Route("GetX")]
public IQueryable<Phrase> GetX()
{
var phrases = new List<PhraseX>
{
new PhraseX() {Keyword="abc", Translation1="abc1", Translation2="abc2" },
new PhraseX() {Keyword="def", Translation1="def1", Translation2="def2" },
new PhraseX() {Keyword="ghi", Translation1="ghi1", Translation2="ghi2" },
};
return db.Phrases;
}
这是我目前在客户端上的一个终端应用程序:
var request = HttpWebRequest.Create("http://www.example.com/api/Phrase/GetX");
request.ContentType = "application/json";
request.Method = "GET";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
我得到预期的数据回来,但现在我不知道我怎么能得到的数据返回json回到一个列表?有什么建议吗?
您需要将 JSON反序列化为c#对象。
这些链接将帮助你:
https://msdn.microsoft.com/en-us/library/bb412179 (v = vs.110) . aspxhttp://www.newtonsoft.com/json/help/html/deserializeobject.htm
你可以这样做:
string jsonStr = "[{Keyword:'"abc'", Translation1:'"abc1'", Translation2:'"abc2'" },{Keyword:'"def'", Translation1:'"def1'", Translation2:'"def2'" },{Keyword:'"ghi'", Translation1:'"ghi1'", Translation2:'"ghi2'" }]";
JavaScriptSerializer jss = new JavaScriptSerializer();
List<PhraseX> phrases = jss.Deserialize<List<PhraseX>>(jsonStr);
其中PhraseX是一个类-
public class PhraseX
{
public string Keyword { get; set; }
public string Translation1 { get; set; }
public string Translation2 { get; set; }
}
注意:您将在System.Web.Extensions.dll
中找到JavaScriptSerializer
类您也可以使用JSON。
希望能有所帮助。
您可以将JSON反序列化为c#对象,如前面的答案所述。
使用Json。. NET (Newtonsoft.Json
命名空间),您可以将JSON数据传递给JsonConvert.DeserializeObject<T>(json_data)
方法,其中T
是JSON应该反序列化成的数据类型,json_data
显然是您收到的JSON数据。如果你不想在你的解决方案中引入第三方依赖,显然你也可以使用内置的JavaScriptSerializer
。
Visual Studio给了你一个非常简单的方法来为你的JSON创建c#类,看看我的答案在这里和这里。