2016-04-13 25 views
4

için diziyi deserialize edin Android ile çok çalıştım ama bugün Xamarin ile çalışmam gerekiyor. Bir PCL sınıfı yapıyorum ve bir Android sarıcısından arama yapmak için bir dizeden (HttpWebResponse bir dizeye dönüştürülmüş) bir JSON nesnesi oluşturmaya çalışıyorum. Bazı araştırmalardan sonra sorumu gerçekten cevaplandıran bir şey bulamadım.Xamarin PCL C# - Bir JSONObject/JSONArray

Sonuçta ben sadece böyle bir şey aramak mümkün istiyorum:

string value = jsonObject.get("key").getAsString(); 

ben http yanıtından bir dize almak ve sonra JSON nesnesi haline dönüştürmek istiyorum. JSON nesnesi oluşturulduğunda, örnekte olduğu gibi bir değer çıkarmak istiyorum. Ancak, bunu bir PCL'de yapıyorum, bu yüzden bir PCL'den Xamarin/C# içinde yapmak mümkün mü?

Yardım ve okuma için teşekkürler!

cevap

5

Sen Newtonsoft.Json kütüphaneyi kullanan bir nesne haline dize serisini: Ayrıca yerine HttpWebRequest ait HttpClient sınıfını kullanın ve otomatik olarak nesnesine yanıtı serisini

Account account = JsonConvert.DeserializeObject<Account>(jsonFromServer);

:

var client = new HttpClient(); 
var response = await client.GetAsync("/accounts"); 

Account account = await response.Content.ReadAsAsync<Account>(); 

ise Hata oluştuğunda sunucu farklı StatusCode döndürür, yanıtı serileştirmek için hangi tipte karar vermek için HttpResponseMessage.IsSuccessStatusCode kullanabilirsiniz. Değilse Eğer var jsonObject = JObject.Parse(jsonText); kullanabilir ve bunun gibi özelliklere erişebilirsiniz: jsonObject["someKey"]

Bu hızlı yanıt için Nuget dan

+0

Tanklarının Microsoft.AspNet.WebApi.Client kütüphane gerekir! Yaptığın gibi yapabileceğimi çoktan gördüm, belki bir şey anlamadım. Bazı durumlarda hata yanıtı alabildiğimiz için iyiyiz ve o zaman Hesap ile aynı nesne değildir (örneğin kodunuzu örnek alırsam). Yani böyle bir Hesap nesnesi ya da bir Hata nesnesi gibi olabilir? Ne demek istediğimi anlıyor musun? – Emixam23

+0

@MaximeGuittet: Cevabımı güncelledim. – Giorgi