iOS 5プロジェクトでNSJSONSerialization JSONObjectWithData:options:error:
を使用してJSON文字列を読み取り、それをFoundationオブジェクトに変換しています。オブジェクトや子要素のいくつかが配列、辞書、数字、文字列かどうかを簡単に調べる方法はありますか?Objective-C JSONタイプ
1
A
答えて
3
返されたオブジェクトが-isKindOfClass:
メソッドの特定のクラスであるかどうかを確認することができます。たとえば、配列かどうかを確認するには、次のようにします。
id jsonObj = [NSJSONSerialization JSONObjectWithData:...]
if ([jsonObj isKindOfClass:[NSArray class]] {
// Do array stuff...
}
他のファンデーションタイプも同様です。
1
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
関連する問題
** SBJson Framework **をかなりの期間使用しています。私... ;-) –
それは素晴らしいですが、それは本当に質問に答えることはありません...これはコメントとして適している可能性があります。 – rid