2013-07-11 3 views
-2

Как правильно сортировать Json. Json ниже выводится в браузере.Как подобрать этот JSON

{ 
event: { 
July: [ 
{ 
createdSeatMap: "yes", 
status: "1", 
completed: "1", 
eventPayment: "0", 
} 
], 
Aug: [ 
{ 
createdSeatMap: "yes", 
status: "1", 
completed: "1", 
eventPayment: "0", 
} 
], 
Sept: [ ], 
Oct: [ ], 
Nov: [ ], 
Dec: [ 
{ 
createdSeatMap: "yes", 
status: "1", 
completed: "1", 
eventPayment: "0", 
stamp: "1386019800" 
}, 
{ 
createdSeatMap: "yes", 
status: "1", 
completed: "1", 
eventPayment: "0", 
stamp: "1387921620" 
} 
], 
Jan: [ ], 
Feb: [ ], 
Mar: [ ], 
Apr: [ ], 
May: [ ], 
June: [ ] 
} 
} 

Ниже приведена консоль при извлечении.

Apr =  (
); 
Aug =  (
      { 

     createdSeatMap: "yes", 
     status: "1", 
     completed: "1", 
     eventPayment: "0", 
    } 
); 
Dec =  (
      { 
createdSeatMap: "yes", 
status: "1", 
completed: "1", 
eventPayment: "0", 
stamp: "1386019800" 
}, 
{ 
createdSeatMap: "yes", 
status: "1", 
completed: "1", 
eventPayment: "0", 
stamp: "1387921620" 
} 
); 
Feb =  (
); 
Jan =  (
); 
July =  (
      { 
     createdSeatMap: "yes", 
status: "1", 
completed: "1", 
eventPayment: "0", 
    } 
); 
June =  (
); 
Mar =  (
); 
May =  (
); 
Nov =  (
); 
Oct =  (
); 
Sept =  (
); 

Ниже код я использую

NSMutableArray *dictAllValues = [[NSMutableArray alloc]init]; 
NSMutableDictionary *getDataDict = [[NSMutableDictionary alloc]init]; 

getDataDict = [self.mGetDataDict valueForKey:@"event"]; 

NSArray *dictAllKeys = [[NSArray alloc] init]; 

dictAllKeys = [getDataDict allKeys]; 

NSLog(@"dict :%d", [dictAllKeys count]); 
for(int i=0; i<[getDataDict count]; i++) 
{ 
    NSString *strKey = [dictAllKeys objectAtIndex:i]; 
    [dictAllValues addObjectsFromArray:[getDataDict valueForKey:strKey]]; 
    if(i==0) 
    { 

     NSArray *cVals = [dictAllValues valueForKey:strKey]; 
     int c = [cVals count]; 
     NSLog(@"values:%@", cVals); 
     NSLog(@"values:%@", dictAllValues); 
     [self.mArrMOneEvents addObject:[NSString stringWithFormat:@"%d", c]]; 
     self.mArrMOneEtType = [dictAllValues valueForKey:@"type"]; 
     self.mArrMOneEtTime = [dictAllValues valueForKey:@"time"]; 
     self.mArrMOneEtSeatMap = [dictAllValues valueForKey:@"createdSeatMap"]; 
     self.mArrMOneEtSeatId = [dictAllValues valueForKey:@"seatMapId"]; 
     self.mArrMOneEtQuant = [dictAllValues valueForKey:@"quantity"]; 
     self.mArrMOneEvents = [dictAllValues valueForKey:@"eventName"]; 
     self.mArrMOneETLoc = [dictAllValues valueForKey:@"location"]; 
     self.mArrMOneEtEId = [dictAllValues valueForKey:@"id"]; 
     self.mArrMOneEtDesc = [dictAllValues valueForKey:@"description"]; 
     self.mArrMOneEtDate = [dictAllValues valueForKey:@"date"]; 
     self.mArrMOneEtCurr = [dictAllValues valueForKey:@"currency"]; 
     self.mArrMOneEtCost = [dictAllValues valueForKey:@"cost"]; 
     self.mArrMOneEtCateg = [dictAllValues valueForKey:@"category"]; 
     self.mArrmOneEtImg = [dictAllValues valueForKey:@"banner"]; 
     NSLog(@"array one:%d", [self.mArrMOneEvents count]); 
    } 
} 

+(NSString *)sendRequest:(NSMutableURLRequest *)request 
{ 
NSHTTPURLResponse *response; 
NSError *error; 
NSData *responseData; 
responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
if(responseData && [responseData length]) { 
    NSString* aStr; 
    aStr = [[NSString alloc] initWithData:responseData encoding:NSASCIIStringEncoding]; 
    return aStr; 
} 
else { 
    return @"No Record Found"; 
}  
} 

+(NSMutableDictionary *)forgotPassw:(NSDictionary *)mailId 
{ 
NSString *urlStr = [NSString stringWithFormat:@"http://myvnt.co/api2/forgotpassword/%@",[mailId valueForKey:@"mailId"]]; 

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: 
           [NSURL URLWithString: 
           [urlStr stringByAddingPercentEscapesUsingEncoding: 
            NSUTF8StringEncoding]]]; 

NSString *responseString = [MtApi sendRequest:request]; 
NSLog(@"response:%@", responseString); 
NSError *error; 
NSData *jsonData = [responseString dataUsingEncoding:NSUTF16StringEncoding]; 
NSDictionary *results = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error]; 

NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithDictionary:results]; 
NSLog(@"dict in API-------------%@",dict); 

return dict; 
} 

Как разобраться в этом, пожалуйста, руководство по выше. Заранее спасибо.

+0

Я нашел вопрос previsouly отвечал, надеюсь, что это может помочь вам. [json массивы и сортировка] (http://stackoverflow.com/questions/14601229/json-arrays-and-sorting) – Keeano

ответ

1

JSON является эссенциальным NSDictionary, который не является упорядоченной коллекцией. Для того, чтобы иметь последовательный порядок, вам необходимо распечатать вручную:

NSArray sortedKeys = [json keysSortedByValueUsingSelector:@selector(someSelectorWhichSortsByMonthOrder)]; 

[sortedKeys enumerateObjectsUsingBlock:^(NSString *month, NSUInteger idx, BOOL *stop){ 
    NSLog(@"%@ = %@", month, json[month]); 
}]; 

, но сказав, что порядок разве изменения содержимого словаря, так есть ли причина, вы действительно все равно, как она выглядит напечатанный на консоли?

редактировать: так как вы хотите упорядочивание для представления таблицы это то, что я хотел бы сделать:

не утруждая с вышеизложенным сортировки, просто определить массив, содержащий имена месяцев (в порядке убывания). В cellForRowAtIndexPath: получить текущий месяц с помощью indexPath.row, а затем вы можете получить доступ к данным в месяц по телефону:

NSString *cellMonth = self.orderedMonthNames[indexPath.row]; 
NSDictionary *monthData = self.jsonDictionary[cellMonth]; 
+0

Говорят, что никакой селектор не доступен для someSelectorWhichSortsByMonthOrder. Я отправил свой код и проверил PLS. –

+0

, очевидно, вам нужно будет решить, какой селектор вы используете там, я не знаю, какой селектор будет заказывать в зависимости от месяца, вам, вероятно, придется написать метод – wattson12

+0

. Да, мне нужно заботиться о заказе, потому что я показываю месяцы в виде таблицы. с текущего месяца, поэтому значения должны быть указаны в соответствующие месяцы. –

Смежные вопросы