如何从 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?