美文网首页
json字符串解析成数组 or 字典

json字符串解析成数组 or 字典

作者: 余小鱼er_ | 来源:发表于2018-01-26 09:40 被阅读50次

    公司的服务端返回的数据是json字符串,需要自己转化成相应的数组或字典类型:

    {
        d =     {
            Data = "[{\"User_Icon\":\"271_48.jpg\",\"Doctor_Id\":51,\"User_Name\":\"sjnk\",\"User_FullName\":\"神经内科\",\"Doctor_Title\":\"主任医师\",\"Doctor_Specialty\":\"联系电话:0371-66916410\\n
    特色诊疗:1、头晕的诊断与治疗。科室拥有头晕(前庭功能)检查先进设备,在头晕的诊疗方面积累了丰富的诊疗经验,处于省内先进水平;
    2、急性脑血管病(脑梗死、脑出血、脑缺血发作、蛛网膜下腔出血、脑静脉血栓形成、脑血管狭窄等)的诊断、抢救与治疗。尤其是我们开展早期溶栓治疗脑梗死,卓有成效,抢救成功许多危重病人的生命。
    3、脑白质脱髓鞘及记忆障碍、痴呆、脑萎缩的诊断与治疗。
    4、神经内科疑难病诊治。神经内科一病区业务技术力量强,在知名专家何远宏教授带领下,并特邀请省内外著名的神经内科专家王建平教授、李建章教授主持每周三、四疑难病会诊讨论,解决很多疑难病的诊治问题。
    5、面瘫的诊治。6、睡眠障碍与抑郁、焦虑的诊断与治疗。
    \",\"Doctor_Intro\":\"www.ztzy.com/Office-2.html\",\"Hospital_FullName\":\"郑州大学第五附属医院\",\"Department_FullName\":\"神经内科\",\"Treatment_Count\":674,\"Treatment_Satis\":\"5\",\"InRoom\":1},{\"User_Icon\":\"273_34.jpg\",\"Doctor_Id\":53,\"User_Name\":\"xxgnk\",\"User_FullName\":\"心血管内科\",\"Doctor_Title\":\"主任医师\",\"Doctor_Specialty\":\"联系电话:0371-66916410\\n
    特色诊疗:1、冠心病及心肌梗死的介入治疗;心律失常、心房纤颤射频消融治疗;先天性心脏病的介入治疗。2、冠心病、心力衰竭及高血压病的诊断治疗。3、心脏起搏器植入术及其术后管理;心力衰竭心脏再同步化治疗。4、冠状动脉支架术后病人管理及心血管疾病的康复治疗。\",\"Doctor_Intro\":\"www.ztzy.com/Office-12.html\",\"Hospital_FullName\":\"郑州大学第五附属医院\",\"Department_FullName\":\"心血管内科\",\"Treatment_Count\":289,\"Treatment_Satis\":\"5\",\"InRoom\":1}]";
            Msg = "成功";
            Status = 1;
            "__type" = "Domain.CusResult";
        };
    }
    

    我这里把它封装到自己的工具类里了,用类方法调用的:
    1.解析成数组类型

    + (NSArray *)arrayWithJsonString:(NSString *)jsonString {
        if (jsonString == nil) {
            return nil;
        }
        NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
        NSError *err;
        NSArray *arr = [NSJSONSerialization JSONObjectWithData:jsonData
                                                       options:NSJSONReadingMutableContainers
                                                         error:&err];
        if(err) {
            NSLog(@"json解析失败:%@",err);
            return nil;
        }
        return arr;
        
    }
    

    2.解析成字典类型,和数组类型方法一样,只不过是把NSArry换成NSDictionary。

    + (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString {
        if (jsonString == nil) {
            return nil;
        }
        NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
        NSError *err;
        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:jsonData
                                                       options:NSJSONReadingMutableContainers
                                                         error:&err];
        if(err) {
            NSLog(@"json解析失败:%@",err);
            return nil;
        }
        return dict;
        
    }
    

    因为服务端返回过来的数据里Data = "[{\"User_Icon 多了首尾" 所以用的时候,要先把它从字符串中截取掉,再用解析方法来解析成相应的数组或字典。

    NSString *str = dic[@"d"][@"Data"];
            str = [str substringFromIndex:0];//截取掉首部的"
            str = [str substringToIndex:str.length];//截取掉末尾的"
            //json字符串转化成数组类型
            NSArray *newArr = [Validate arrayWithJsonString:str];
            for (NSDictionary *newdic in newArr) {//遍历数组获取数据
                EMNetworkDoctorListModel *doctModel = [[EMNetworkDoctorListModel alloc]initWithDict:newdic];
                [self.doctorArray addObject:doctModel];
            }
    

    相关文章

      网友评论

          本文标题:json字符串解析成数组 or 字典

          本文链接:https://www.haomeiwen.com/subject/emysaxtx.html