0

我对 c# 中的 json 非常陌生。我应该做一个项目并通过 mvc4 api 将我的数据提供给其他同学。因此,我也应该能够使用其他 api。

由于我真的不知道如何将请求的结果解析为对象,所以我在这里问。

我一直在请求这样的页面:

string url = "myUrl";

        WebRequest request = HttpWebRequest.Create(url);

        WebResponse response = request.GetResponse();

        StreamReader reader = new StreamReader(response.GetResponseStream());

        string urlText = reader.ReadToEnd();

该请求的结果如下:

[{"Id":1,"Whose":1,"ReservedUserId":null,"ReservedBy":null,"ReservedSince":null,"City":"Gent","Street":"Sleepstraat","Number":12,"PostalCode":9000,"DateAdded":"2012-12-28T00:00:00","Description":"Momenteel geen omschrijving van dit pand","ContractLength":"12 maand","Surface":12,"MonthPrice":350,"AvailableSince":"2012-12-28T00:00:00","Rooms":2,"Maintenance":"Goed","Equipment":"Niet gemeubeld","Smokers":false,"Animals":false,"Housemates":2,"Toilet":"Gedeeld","Kitchen":"Gedeeld","Shower":"Gedeeld","Internet":"Ja, Telenet","Included":"Gas & Elektriciteit","Guarantee":350,"ContactEmail":"kotbaas@baas.com","ContactTel":"0936001234"}]

我怎样才能轻松地将其转换为 ac# 对象,以便我可以使用它的属性?

亲切的问候

4

2 回答 2

3

使用JSON.Net序列化和反序列化 JSON。您可以通过 NuGet 安装它。

如果您有一个映射到 JSON 字段的类,您可以执行以下操作:

var chamber = JsonConvert.DeserializeObject<Chamber>(urlText);

您还可以使用动态对象

var chamber = JsonConvert.DeserializeObject<dynamic>(urlText);
int id = chamber.Id
于 2013-01-13T02:48:39.033 回答
0

方法一:

首先创建一个所有变量都匹配 json 对象的类

public class ClassName{
      public int id {get;set;}
      public int Whose {get;set;}
      public int ReservedUserId {get;set;}
      ...
      ...
      ... 
      public string ContactTel {get; set;}
}

然后您可以使用JavaScriptSerializer将 JSON 对象反序列化为上面定义的新 C# 自定义对象

JavaScriptSerializer js = new JavaScriptSerializer();
ClassName [] c =  js.Deserialize<ClassName[]>(json);

方法二:

您可以使用JSON.NET将 JSON 反序列化为动态对象

dynamic obj = JObject.Parse("{Id:1,Whose:1,ReservedUserId:null,ReservedBy:null}");
//dynamic obj = JObject.Parse(urlText);

然后你可以使用访问对象

obj.Id;
obj.Whose;
obj.ReservedUserId;
obj.ReservedBy;
于 2013-01-13T02:45:48.830 回答