2012-05-02 11 views

答えて

3

返されたオブジェクトが-isKindOfClass:メソッドの特定のクラスであるかどうかを確認することができます。たとえば、配列かどうかを確認するには、次のようにします。

id jsonObj = [NSJSONSerialization JSONObjectWithData:...] 
if ([jsonObj isKindOfClass:[NSArray class]] { 
    // Do array stuff... 
} 

他のファンデーションタイプも同様です。

1

NSJSONSerializationは、iOS 5.0以降とMac OS X 10.7以降でのみ使用できるため、注意してください。どちらがが容易で

  • SBJson
  • (その導入あたりNSJSONSerializationより速い)

    • JSONKit

      私はあなたには、また、サードパーティのライブラリ、と試してみることができると思います柔軟で使いやすい。

    +1

    ** SBJson Framework **をかなりの期間使用しています。私... ;-) –

    +3

    それは素晴らしいですが、それは本当に質問に答えることはありません...これはコメントとして適している可能性があります。 – rid

    1

    すべてのオブジェクトがクラスに応答できます。さらに便利なのは、何かがクラスのメンバーかそれともサブクラスなのかを尋ねることができます:

    id jsonParse; 
    
    if ([jsonParse isKindOfClass:[NSArray self]]) { 
        for (id element in (NSArray *)jsonParse) { 
    
         // and so on 
        } 
    } 
    
    +0

    '[NSArray self]'は奇妙に見えますが(動作しますが)。 '[NSArray class]'は、もっと典型的な慣用的Objective-Cです。 –

    +1

    それはより典型的ですが、少しだけ間違っています。それがクラスであることをクラスに尋ねることは、それがメタクラス(Objective Cから敬虔に欠けている概念)であることを求めることです。しかし、自分自身のためにクラスを尋ねることは、明確で正確であり、私が言うことを敢えて...上品です。 – danh