如何转换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回到一个列表?有什么建议吗?

如何转换ASP ?. NET WebAPI调用,返回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#类,看看我的答案在这里和这里。