2011-08-27 2 views
89

내 응답에 "error"키가있는 경우 오류를 처리하고 경고 상자를 표시해야합니다.json.net에는 중요한 방법이 있습니까?

"haskey"메서드가 json.net에 있습니까? 처럼 :

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

이 질문에는 두 가지 변종이 있습니다. 하나의 변종은 JSON 사전이 평면 (어린이 제외)이고 다른 곳에서 키가있는 곳입니다. 아이들의 계층 구조 어딘가에있다. 이 글을 쓰는 시점에서 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

JObjectIDictionary<string, JToken> 구현, 그래서 당신은 사용할 수 있습니다

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

... 또는 TryGetValue을 사용할 수 있습니다. 명시 적 인터페이스 구현을 사용하여 두 가지 방법을 모두 구현하므로 먼저 IDictionary<string, JToken>으로 변환하지 않고는 사용할 수 없습니다.

+0

나는 이것을 천천히 받아들이는 대답이 될 것이지만, 감사합니다. – SevenDays

+2

@wsevendays, 여기서 문제를 빠르게 처리합니까, 아니면 단지 미세 최적화 (및 추측에 근거)입니까? 당신은 당신이 읽을 수있는 것을 사용해야합니다. – svick

+0

내 WP7 휴대 전화의 1GHz 프로세서 속도가 크지 않아 속도에 신경 써야합니다. – SevenDays

관련 문제