Last active
August 29, 2015 13:56
-
-
Save FrankWu100/8936613 to your computer and use it in GitHub Desktop.
NSDictionary or NSArray(NSDictionary) or another print JSON text
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// FWJSONPrint.h | |
// ClassComment | |
// | |
// Created by FrankWu on 2014/2/11. | |
// Copyright (c) 2014年 FrankWu. All rights reserved. | |
// | |
#import <Foundation/Foundation.h> | |
@interface FWJSONPrint : NSObject | |
+ (NSString *)describeDictionary:(id)data; | |
@end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// FWJSONPrint.m | |
// ClassComment | |
// | |
// Created by FrankWu on 2014/2/11. | |
// Copyright (c) 2014年 FrankWu. All rights reserved. | |
// | |
#import "FWJSONPrint.h" | |
@implementation FWJSONPrint | |
+ (NSString *)describeDictionary:(id)data | |
{ | |
NSString *str = [[NSString alloc] init]; | |
//NSParameterAssert([data isKindOfClass: [NSArray class]] || [data isKindOfClass: [NSDictionary class]] || [data isKindOfClass: [NSString class]]); | |
if ([data isKindOfClass: [NSArray class]]) | |
{ | |
if ([[data allObjects] count] == 0) | |
str = [str stringByAppendingString:@"[]"]; | |
else{ | |
str = [str stringByAppendingString:@"["]; | |
for(NSDictionary* dict in [data allObjects]) | |
{ | |
str = [str stringByAppendingString:@"\r\n\t"]; | |
NSString *tmp = [self addLevel:[self describeDictionary:dict]]; | |
str = [str stringByAppendingFormat:@"%@,", tmp]; | |
} | |
str = [str substringToIndex:[str length]-1]; | |
str = [str stringByAppendingString:@"\r\n]"]; | |
} | |
} | |
else if ([data isKindOfClass: [NSDictionary class]]) | |
{ | |
str = [str stringByAppendingString:@"{"]; | |
NSArray *keys; | |
NSInteger i, count; | |
id key, value; | |
keys = [data allKeys]; | |
count = [keys count]; | |
for (i = 0; i < count; i++) | |
{ | |
str = [str stringByAppendingString:@"\r\n\t"]; | |
key = [keys objectAtIndex: i]; | |
value = [data objectForKey: key]; | |
NSString *tmp = [self addLevel:[self describeDictionary:value]]; | |
str = [str stringByAppendingFormat:@"\"%@\" : %@,", key, tmp]; | |
} | |
str = [str substringToIndex:[str length]-1]; | |
str = [str stringByAppendingString:@"\r\n}"]; | |
} | |
else if ([data isKindOfClass: [NSString class]]) | |
{ | |
str = [str stringByAppendingFormat:@"\"%@\"", data]; | |
} | |
else if ([data isKindOfClass: [NSNumber class]]) | |
{ | |
if ([NSStringFromClass([data class]) isEqualToString:@"__NSCFBoolean"]) { | |
str = [str stringByAppendingFormat:[data boolValue] ? @"true" : @"false"]; | |
} | |
else | |
str = [str stringByAppendingFormat:@"%@", data]; | |
} | |
else if (data == NULL) | |
{ | |
str = [str stringByAppendingString:@"null"]; | |
} | |
return str; | |
} | |
+ (NSString *)addLevel:(NSString *)str | |
{ | |
if ([str rangeOfString:@"\r\n"].location != NSNotFound) { | |
str = [str stringByReplacingOccurrencesOfString:@"\r\n" withString:@"\r\n\t"]; | |
str = [[NSString alloc] initWithFormat:@"%@", str]; | |
} | |
return str; | |
} | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment