【问题标题】:How do I get JSON data in a plain c# program from a ASP.net MVC program?如何从 ASP.net MVC 程序中获取纯 c# 程序中的 JSON 数据?
【发布时间】: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

标签: c# asp.net asp.net-mvc json web-services


【解决方案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);
    

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

    【讨论】:

      猜你喜欢
      • 2019-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      • 2012-05-16
      • 1970-01-01
      • 2013-09-10
      • 1970-01-01
      相关资源
      最近更新 更多