2016-10-21 3 views
0

У меня есть jsonString, который приходит из массива, и это выглядит примерно так:фильтр определенный ключ из JSon строки

NSMutableArray *tempListArray = [NSMutableArray new]; 

    for (VideoListData *obj in self.listArray) { 
     NSMutableDictionary *dict = [obj convertotDict:obj]; 
     [tempListArray addObject:dict]; 
    } 

    NSError *writeError = nil; 
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:tempListArray options:0 error:&writeError]; 

NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 

Он содержит что-то данные, как это в формате JSON:

[ 
{ 
"ImageUrl":"...", 
"Duration":0, 
"PlaylistId":"", 
"Content":"...", 
"LastPlayTime":0, 
"VideoId":"5" 
}, 
{ 
"ImageUrl":"...", 
"Duration":0, 
"PlaylistId":"", 
"Content":"...", 
"LastPlayTime":0, 
"VideoId":"1959" 
} 
] 

Как я могу фильтровать только ключ «VideoId» и использовать его в другом новом jsonString? Или лучше фильтровать его в форме массива? Поэтому он должен выглядеть примерно так:

[ 
{ 
"VideoId":"5" 
}, 
{ 
"VideoId":"1959" 
} 
] 
+1

Почему вы беспокоитесь о JSON? У вас уже есть объекты VideoListData в массиве. Почему бы не создать требуемые данные массива/словаря с помощью только нужного значения? – rmaddy

+0

Вам нужен массив словарей строк (как в вашем посте) или массив строк? –

+0

вам нужно только videoId в одном массиве? –

ответ

0

У вас уже есть его в массиве. Поэтому обычно обращайтесь к значению индекса как. Сначала получите идентификатор, затем, если вы хотите использовать его дальше, создайте словарь, добавьте MyVideoId каждый раз и каждый словарь в массиве. Сначала получите VideoId.

попробовать:

NSString *MyVideoId=[[tempListArray objectAtIndex:0] objectForKey:@"VideoId"]; 

Или, если вы хотите его из текущего состояния, попробуйте:

NSMutableArray *jsonObject = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding] 
                 options:0 error:NULL]; 


NSString *MyVideoId=[[jsonObject objectAtIndex:0] objectForKey:@"VideoId"]; 

Вы добавите как, вы будете иметь его внутри цикла. Объявите myNewarra вне цикла и tempDict внутри цикла.

NSMutableArray *myNewarra=[[NSMutableArray alloc] init]; 
NSDictionary *tempDict=[[NSDictionary alloc] init]; 
[tempDict setValue:MyVideoId forKey:@"VideoId"]; 
[myNewarra addObject:tempDict];