通过JSON实现NSString,NSDictionary(NSArray)相互转化

照旧先上图:

NSDictionary * dictnew = [[NSDictionary alloc]initWithObjectsAndKeys:@"花姐",@"name",@"167",@"height", nil];
NSLog(@"dictnew:%@",dictnew);

这里写图片描述

理论上,NSDictionary,NSArray是不能直接转化为NSString格式,就算通过万能的NSlog,打印出来也是unicode格式。

如何保存汉字并能保持字典和数组的原有格式?

比较一劳永逸的方法:Method swizzing方法替换原函数
http://www.tuicool.com/articles/Y3aYNz

还有种方法就是用json格式做中转

JOSN->NSDictinary

Created with Raphaël 2.1.0 JSON(NSString) NSData Object

上面是json格式的String转化为字典其他类型的流程,其中要经过一次NSData的转化,其他类型转化为String也同样,前提是数据结构符合json格式。

废话不说,上代码:
String -> Dictionary

-(NSString*)strToJson{
    NSData* data = [self dataUsingEncoding:NSUTF8StringEncoding];
    NSError * err = nil;
    id jsonobj = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&err];
    if(err!= nil)return nil;
    return  jsonobj;
}

Dictonary -> String

-(NSString*)objectTojson{
    NSError* err= nil;
    NSData* data = [NSJSONSerialization dataWithJSONObject:self options:kNilOptions error:&err];
    NSString * jsons = nil;//[[NSString alloc]init];
    if(err==nil){
        jsons = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
    }
    return  jsons;

}

上面分别是NSString,NSObject的category中的方法,必须用NSData做中介

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值