iOS- 对服务端报文的处理

#import@interface NSObject (JsonWriting)

- (NSString *)JSONRepresentation;

- (id)JSONValue;

@end



#import "NSObject+JsonWriting.h"

@implementation NSObject (JsonWriting)

- (NSString *)JSONRepresentation

{

NSString *str;

if ([NSJSONSerialization isValidJSONObject:self])

{

NSError *err;

NSData *strData = [NSJSONSerialization dataWithJSONObject:self options:NSJSONWritingPrettyPrinted error:&err];

str = [[NSString alloc] initWithData:strData encoding:NSUTF8StringEncoding];

}

return str;

}

- (id)JSONValue

{

//处理报文

NSError *err;

//判断是否为json字符串

if ([self isKindOfClass:[NSString class]])

{

NSString *jsonstr = (NSString*)self;

NSString *containString = @":";

NSRange range = [jsonstr rangeOfString:containString];

if (range.location == NSNotFound || [self strNilOrEmpty:jsonstr])

{

return nil;

}

}

else

{

NSString *jsonstr = [[NSString alloc]initWithData:(NSData *)self encoding:NSUTF8StringEncoding];

NSString *containString = @":";

NSRange range = [jsonstr rangeOfString:containString];

if (range.location == NSNotFound || [self strNilOrEmpty:jsonstr])

{

return nil;

}

}

if ([self isKindOfClass:[NSString class]])

{

NSString *jsonstr = (NSString*)self;

NSData *data = [jsonstr dataUsingEncoding:NSUTF8StringEncoding];

id dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&err];

return dict;

}

id dict = [NSJSONSerialization JSONObjectWithData:(NSData *)self options:NSJSONReadingAllowFragments error:&err];

return dict;

}

-(BOOL)strNilOrEmpty:(NSString *)string{

if ([string isKindOfClass:[NSString class]]) {

if (string.length > 0) {

return NO;

}

else {

return YES;

}

}

else {

return YES;

}

}

@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、禁止手机睡眠[UIApplication sharedApplication].idleTimerDisabl...
    DingGa阅读 4,803评论 1 6
  • 1、设置UILabel行间距 NSMutableAttributedString* attrString = [[...
    十年一品温如言1008阅读 5,729评论 0 3
  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 7,311评论 1 14
  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 9,128评论 2 7
  • 周末,和家人一起到了台儿庄古城,下午去的,晚上留宿一晚。刚到下榻的酒店,临近窗口便可以听见声声非洲鼓的声音,和那首...
    李聘2023阅读 1,722评论 0 1