2011-11-10 7 views
0

Windows Phone 7 용 Foursquare 응용 프로그램을 작성하고 있습니다. HttpWebRequests와 잘 작동하며 JSON 객체를 완벽하게 수신하고 있습니다. DataContractJsonSerializer (type) 메서드를 사용하고 있습니다. 하지만 내가 원하는 객체에이 JSON을 비 직렬화 할 때 객체의 배열과 객체 배열이 올 때까지 어떤 객체 유형이 기대되는지 알지 못합니다. 객체의 수는 &입니다. 그러나 DataContractJsonSerializer (type) 메서드에서 deserialize 할 때이 형식을 정의해야합니다.배열의 객체 유형을 모르는 상태에서 배열을 사용하여 JSON 객체를 비 직렬화하는 방법

내가 당신에게 문제의 원인 JSON의 스냅 샷을 보여주지 :

notifications": 
[{ 
    "type":"notificationTray", 
    "item":{ 
     "unreadCount":0 
    } 
},{ 
    "type":"message", 
    "item":{ 
     "message":"OK! We've got you @ Strandslag 4. You've been here 2 times." 
    } 
}] 

그래서 저는 두 memers으로 통지 객체의 배열이 직렬화 복원하고있어 "공공 문자열 유형"과 "공개 개체 항목 ". 어떤 배열이 배열에 있는지 (따라서 'item'멤버가 어떤 형식인지) 알 수 없습니다. JSON에서 볼 수 있듯이 첫 번째 알림에는 int 유형의 항목이 있지만 두 번째 알림 항목에는 string 유형이 있습니다. 하지만 deserialization에 대해 알아야합니다. 그렇지 않으면 그냥 null로 남습니다. 그래서 올바른 유형으로 캐스팅 할 수 없습니다.

아무도 이것을 멋지게 해결할 수있는 방법을 알고 있습니까?

+0

4th & Mayor (다른 Foursquare 앱) 건물에 대한 정보는 여기를보십시오. 도움이 될 수 있습니다. http://www.jeff.wilcox.name/2011/03/4am-leaderboard-notification/ – Ku6opr

+0

감사합니다. Ku6opr! 확실히 내 문제에 대한 옵션입니다. 표준 Deserialize 메서드에서 예제에 사용 된 라이브러리로 내 애플 리케이션을 다시 작성해야합니다. 나는 그것을 시도 할거야! 다시 한 번 감사드립니다! –

답변

1

흠 100 % 확신 할 수 없지만이 질문에 대한 답변을 드릴 수 있지만 객체를 문자열로 변환 한 다음 그 방식으로 조작하는 것은 자바 스크립트를 사용할 수 없습니까?

같은 :

VAR로 .toString 값 =대로 [수];

이렇게하면 작업 할 수있는 문자열을 얻을 수 있습니다. 그런 다음 다시 int로 구문 분석 할 수 있습니다.

var valueInt = parseInt (value);

그런 다음 IF 문을 사용하여 valueInt가 있는지 여부를 확인하고 첫 번째 개체에 어떤 값이 있는지 확인합니다.

+0

그럴 수도 있습니다.하지만 먼저 Windows Phone 전용 JSON.net 라이브러리를 사용해 보겠습니다. 나는 개인적으로 그것이 더 깨끗한 코드를 줄 것이라고 생각한다. 당신의 도움을 주셔서 감사합니다! –

관련 문제