2011-08-27 17 views
89

Yanıtım anahtar "hatası" içeriyorsa, hatayı işlemek ve uyarı kutusunu göstermem gerekiyor.json.net anahtar yöntem var mı?

json.net'te "haskey" yöntemi var mı? gibi:

var x= JObject.Parse(string_my); 
if(x.HasKey["error_msg"]) 
    MessageBox.Show("Error!") 
+0

Lütfen benim yanıtıma bakın [here] (https://stackoverflow.com/a/47204235/1037314). – Ben

+0

Aynı soruna benzer bir soruyu burada yanıtladım: https://stackoverflow.com/a/47204235/1037314 – Ben

+0

Bu sorunun iki farklı türü vardır: Bir varyant, JSON sözlüğünün düz (çocuksuz) ve başka nerede olduğu anahtardır. çocukların hiyerarşisinde bir yerdedir. Bunu yazarken, ns.json hala bir anahtara sınamak için kolay erişim sağlayacak bir kolaylık yöntemine sahip değildir. – ljgww

cevap

156

Sadece x["error_msg"] kullanın. Özellik mevcut değilse, null değerini döndürür.

+18

Mülkün değeri "null" ise ne olur? –

+40

@AndreasFurster Ardından, "Değeri" null değil, yalnızca "null" olan bir "JValue" döndürecektir. – svick

+0

Özellik 'null' ise' x ["error_msg"] işlevini kullanabilirseniz, nesnenin JSON nesnesinde tanımlanmış olup olmadığını kontrol etmek için Object' – stonito

70

JObjectIDictionary<string, JToken> uygular, böylece kullanabilirsiniz:

IDictionary<string, JToken> dictionary = x; 
if (dictionary.ContainsKey("error_msg")) 

... ya da TryGetValue kullanabilirsiniz. Açık arabirim uygulamasını kullanarak her iki yöntemi de uygular, böylece onları ilk önce IDictionary<string, JToken>'a dönüştürmeden kullanamazsınız.

+0

Zayıflaştığım zaman bu yavaşça kabul edilen cevap olacak, ama teşekkürler. – SevenDays

+2

@wsevendays, burada sizin için önemi hızlandırıyor mu yoksa sadece mikro-zıplıyor (ve tahminlere dayanarak)? Daha okunaklı bulduğun şeyi kullanmalısın. – svick

+0

WP7 telefonumun 1GHz işlemcisinin hızı çok iyi değil ve hıza dikkat etmem gerekiyor. – SevenDays

İlgili konular