0

私はC#でjsonを初めて使用します。私はプロジェクトを作成し、mvc4apiによって他の仲間の学生にデータを提供することになっています。結果として、他の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

方法1:

まず、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);

方法2:

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 に答える