iOS过滤json注释字段

本文探讨了在iOS开发中如何处理并过滤掉JSON数据中的注释字段,以确保数据的有效性和安全性。

过滤并清除json中的注释字段


我们的后台习惯在接口文档的json示例中直接添加注释,有时候测试环境不满足条件无法测试某部分数据,使用接口文档中的json直接转换成模拟数据就相当方便,但是注释和一些不符合的数据要手动逐一修改。为此做了一个过滤特殊字段的方法。

我在这篇文章中查找到了关于过滤非法字段的方法,但是还是不能满足过滤注释的需求。
比如下面一段json

"data": {
	"id": "7",
	"type": "1", // 类型:1-会议 2-活动
	"time": "2018-12-10 11:12", // 日期
	"content": "会议内容",    // 事项
	"remark": "会议备注",  // 事项备注
	...
	}
	...
  • 过滤方法
///读取模拟接口文档数据
- (NSDictionary *)readInterfaceValue {
    //文件路径
    NSString *path = [[NSBundle mainBundle] pathForResource:@"jsonValue" ofType:@"txt"];
    //带有注释的json文本
    NSString *allStr = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    NSScanner *myScanner = [NSScanner scannerWithString:allStr];//扫描
    NSString *annotStr = nil;
    NSString *jsonStr = allStr;
    while ([myScanner isAtEnd] == NO) {
        //开始扫描
        [myScanner scanUpToString:@"//" intoString:NULL];
        [myScanner scanUpToString:@"\n" intoString:&annotStr];
        //将结果替换
        //注意 这样写jsonStr =  [jsonStr stringByReplacingOccurrencesOfString:annotStr withString:@""]; 无法区分json中的”// 事项“和”// 事项备注“ 两个注释
        jsonStr = [jsonStr stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@\n", annotStr] withString:@"\n"];
    }
    if (jsonStr == nil) {return nil;}
    NSData *jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
    NSError *error;
    NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
    if(error) {
        NSLog(@"json解析失败:%@",error);
        return nil;
    }
    return resultDic;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值