0

誰かがIOS5で私のjsonデータを解析する方法を教えてもらえますか?以下にJSONデータを提供しています。

{
 "fieldType" : "Alphanumeric",
 "fieldName" : "Name"
},{
 "fieldType" : "Numeric",
 "fieldName" : "Card Num"
},{
 "fieldType" : "Alphanumeric",
 "fieldName" : "Pin Num"
}

また、このJSON形式は正しいですか、それともJSON形式を変更する必要がありますか?以下のコードを使用してJSONを解析しようとすると、エラーが発生します。

操作を完了できませんでした。(ココアエラー3840。)

私が使用しているコード:

NSError *error = nil;
NSData *jsonData = [filedList dataUsingEncoding:[NSString defaultCStringEncoding]];
if (jsonData) 
{
    id jsonObjects = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];

    if (error)
    {
        NSLog(@"error is %@", [error localizedDescription]);
        // Handle Error and return
        return;

    }
    NSArray *keys = [jsonObjects allKeys];

    // values in foreach loop
    for (NSString *key in keys)
    {
        NSLog(@"%@ is %@",key, [jsonObjects objectForKey:key]);
    }                
} 
else 
{
    // Handle Error 
}
4

2 に答える 2

3

JSONデータが正しくフォーマットされていません。アイテムの配列があるので、これを次のように囲む必要があります[ ... ]

[
    {
     "fieldType" : "Alphanumeric",
     "fieldName" : "Name"
    },{
     "fieldType" : "Numeric",
     "fieldName" : "Card Num"
    },{
     "fieldType" : "Alphanumeric",
     "fieldName" : "Pin Num"
    }
]

これで、オブジェクトのが提供されJSONObjectWithDataます(NSJSONReadingMutableContainersフラグのため)。NSMutableArrayNSMutableDictionary

解析されたデータを次のようにウォークスルーできます

for (NSMutableDictionary *dict in jsonObjects) {
    for (NSString *key in dict) {
        NSLog(@"%@ is %@",key, [dict objectForKey:key]);
    }
}
于 2012-09-23T10:02:46.487 に答える
0

どのタイプの解析でも、最初にNSLogJSONまたはXML文字列を使用してから、コードの解析を開始します。

あなたの場合、JSON文字列に従って、辞書の配列について言及しました。jsonObjectsを取得したら、これを実行してデータを取得します。

 id jsonObjects = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
NSLog(@"%@",jsonObjects);
// as per your example its an array of dictionaries so

NSArray* array = (NSArray*) jsonObjects;
for(NSDictionary* dict in array)
{
NSString* obj1 = [dict objectForKey:@"fieldType"];
NSString* obj2 = [dict objectForKey:@"fieldName"];

enter code here
enter code here
}

このようにして、json文字列を解析できます。詳細については、Raywenderlichによるこのチュートリアルを参照してください。

于 2012-09-23T10:07:27.960 に答える