如何从 ASP.net MVC 程序中获取纯 c# 程序中的 JSON 数据?

Posted

技术标签:

【中文标题】如何从 ASP.net MVC 程序中获取纯 c# 程序中的 JSON 数据?【英文标题】:How do I get JSON data in a plain c# program from a ASP.net MVC program? 【发布时间】:2011-12-17 08:29:30 【问题描述】:

我是 asp.net MVC 的新手。我想创建一个普通的 c# 客户端程序,它使用从 asp.net mvc 程序返回的 json。从 asp.net MVC 站点检索 json 数据的最佳方法是什么?我目前使用 WebRequst、WebResponse 和 StreamReader 来检索数据。这是一个好方法,否则获取数据的最佳实践是什么?我可以使用下面的东西吗?非常感谢

    WebRequest request = HttpWebRequest.Create(url);
    WebResponse response = request.GetResponse();  
    StreamReader reader = new StreamReader(response.GetResponseStream());
    string urlText = reader.ReadToEnd();
    //Then parse the urlText to json object

【问题讨论】:

我的问题是是否可以使用 WebRequst、WebResponse 和 StreamReader 从 asp.net MVC 程序中获取 json 数据。谢谢 不使用 WCF,那么 WebRequest 就可以了,实际上是您唯一可用的选项。 正如西蒙所说,它几乎是您唯一的选择。您可以查看更新的 wcf web api 类,例如 HttpClient,这可能对您更有意义。 nuget.org/List/Packages/WebApi.All 【参考方案1】:

您不会在服务器端将文本解析为 JSON 对象,因为 JSON 是 javascript Object Notation 而 C# 对此一无所知。您将 JSON 字符串解析为特定类型。例如:

string json = "Name":"John Smith","Age":34;

可以像这样反序列化为 C# 类 Person:

public class Person

   public string Name get;set;
   public int Age get;set;


JavascriptSerializer js= new JavascriptSerializer();
Person john=js.Desearialize<Person>(json);

【讨论】:

这就是我要找的。但我的部分问题是,是否可以使用 WebRequst、WebResponse 和 StreamReader 从 asp.net MVC 程序中获取 json 数据,或者还有其他一些做法。感谢您的宝贵时间 @user394128 我不明白为什么不这样做。底线是,如果您在 http 响应中获得一个 json 字符串,您应该能够使用 Javascript 序列化器从该 json 字符串构造您的对象。【参考方案2】:

您可以使用JavaScriptSerializer 类:

var js = new JavaScriptSerializer();
var person = js.Deserialize<Person>(urlText);

当然,Person 应该替换为您自己的 .NET 类型。 Here's also an article that might help you.

【讨论】:

【参考方案3】:

嗯,一种方法是:

var dictionary = new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(urlText);

您可以使用与字典不同的类型,但您是否应该取决于您实际这样做的原因。

【讨论】:

以上是关于如何从 ASP.net MVC 程序中获取纯 c# 程序中的 JSON 数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Asp.net MVC C# 中使用 Linq 从多个表中选择具有最大计数值的记录

如何在 asp.net mvc C# 中使用 paypal 交易的交易 ID 获取交易详情?

如何在 C# 页面 ASP.NET Core MVC 上使用 SignInManager 和 Usermanager

ASP.NET MVC / C#:如何从 url 中删除记录 id?

加入后将不同类型返回到视图(ASP.NET MVC2 C#)

从 Twitter API 获取用户的电子邮件以进行外部登录身份验证 ASP.NET MVC C#