2011-08-27 13 views
89

私の応答にキー "error"がある場合は、エラーを処理して警告ボックスを表示する必要があります。json.netには重要な方法がありますか?

json.netに「haskey」メソッドがありますか? ように:

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

...またはあなたがTryGetValueを使用することができます。あなたが使用できるように

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

私の答え[ここ](https://stackoverflow.com/a/47204235/1037314)を参照してください。 – Ben

+0

https://stackoverflow.com/a/47204235/1037314 – Ben

+0

この質問には2つのバリエーションがあります:1つはJSON辞書がフラット(子なし)で、もう1つはキー子どもの階層のどこかにある。これを書いている時点では、ns.jsonにはキーのテストに簡単にアクセスできる便利な方法はまだありません。 – ljgww

答えて

156

x["error_msg"]を使用してください。プロパティが存在しない場合は、nullを返します。

+18

プロパティの値が 'null'の場合はどうなりますか? –

+40

@AndreasFurster次に、 'null'だけでなく' Value'が 'null'である' JValue'を返します。 – svick

+0

プロパティが 'null'の場合、' x ["error_msg"]はObject'で、プロパティがJSONオブジェクトで定義されているかどうかを確認することができます – stonito

70

JObjectは、IDictionary<string, JToken>を実装しています。明示的なインタフェース実装を使用して両方のメソッドを実装していますので、最初にIDictionary<string, JToken>に変換せずに使用することはできません。

+0

私はこれをゆっくりと受け入れる答えが薄いですが、ありがとう。 – SevenDays

+2

@wsevendays、あなたにここで問題をスピードアップするか、ちょうど微視的に最適化しています(そして推測に基づいています)?もっと読みやすいものを使うべきです。 – svick

+0

私のWP7携帯電話の1GHzプロセッサの速度はあまり高くなく、私はスピードを気にする必要があります。 – SevenDays

関連する問題