不规则的json数据处理

2016-10-25  本文已影响115人  flutter养成中

后台返回了

result--{
 messages = "<null>";
result = "{\"address\":\"\U9e93\U8c37\U4f01\U4e1a\U5e7f\U573ac1\U680b103\",\"articleId\":1388,\"articleNumber\":1,\"contacts\":\"\U674e\U5c0f\U59d0\",\"contactsPhone\":\"18207325127\",\"content\":\"<p style=\\\"font-size:14px;font-family:simsun;color:#333333;background-color:#FFFFFF;\\\">

这种恶心的数据,这是转过一次了的数据,有时候我使用以下方式再转一次就可以解决:

NSString *str = result[@"result"];
            NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
            NSDictionary *content = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

但是 有时候莫名其妙的又崩溃了,后来找了很久,加了一个去掉不规则字符的方法 removeUnescapedCharacter:

 NSString *str = result[@"result"];
            str = [NSString removeUnescapedCharacter:str];
            NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
            NSDictionary *content = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

具体的就是,我是直接就加在了 NSString 的方法里的:

+(NSString *)removeUnescapedCharacter:(NSString *)inputStr
{
    NSCharacterSet *controlChars = [NSCharacterSet controlCharacterSet];//<span style="white-space:pre"> </span>//获取那些特殊字符
    NSRange range = [inputStr rangeOfCharacterFromSet:controlChars];//<span style="white-space:pre"> </span>//寻找字符串中有没有这些特殊字符
    if (range.location != NSNotFound)
    {
        NSMutableString *mutable = [NSMutableString stringWithString:inputStr];
        while (range.location != NSNotFound)
        {
            [mutable deleteCharactersInRange:range];//<span style="white-space:pre"> </span>//去掉这些特殊字符
            range = [mutable rangeOfCharacterFromSet:controlChars];
        }
        return mutable;
    }
    return inputStr;
}

PS:SB后台。。

上一篇下一篇

猜你喜欢

热点阅读