当前位置:编程学习 > JS >>

转换为NSArray后,JSOn响应得到的是空值的解决方案

原问题描述:
转换为NSArray后,JSOn响应得到的是空值
JSON Response :
JSON Log :
[plain]  
[  
  {  
    "0": "41",  
    "intid": "41",  
    "1": "\u8a00\u3046",  
    "varfirstname": "\u8a00\u3046",  
    "2": "test",  
    "varlastname": "test",  
    "3": "\u5730",  
    "varusername": "\u5730",  
    "4": "abc@gmail.com",  
    "varemailid": "abc@gmail.com",  
    "5": "qwert",  
    "varpassword": "qwert",  
    "6": "12345",  
    "varmobileno": "12345",  
    "7": "Enable",  
    "mobileMessage": "Enable",  
    "8": "",  
    "varphoneno": "",  
    "9": "Enable",  
    "enumstatus": "Enable",  
    "10": "2013-01-30",  
    "date_insert": "2013-01-30",  
    "11": "2013-01-30",  
    "date_edit": "2013-01-30",  
    "12": "210.211.252.1",  
    "varipaddress": "210.211.252.1"  
  }  
]  
转换NSArray如下:
[plain] 
// Create new SBJSON parser object   
SBJSON *parser = [[SBJSON alloc] init];    
NSArray *array = (NSArray *) [parser objectWithString:json_string error:nil];  
NSLog(@"Array === %@",array);  
 
 
Array显示数据:
Log :
[plain]  
Array ===  
(  
    {  
    0 = 41;  
    1 = "";  
    10 = "2013-01-30";  
    11 = "2013-01-30";  
    12 = "210.211.252.1";  
    2 = test;  
    3 = "";  
    4 = "abc@gmail.com";  
    5 = qwert;  
    6 = 12345;  
    7 = Enable;  
    8 = "";  
    9 = Enable;  
    "date_edit" = "2013-01-30";  
    "date_insert" = "2013-01-30";  
    enumstatus = Enable;  
    intid = 41;  
    mobileMessage = Enable;  
    varemailid = "abc@gmail.com";  
    varfirstname = "";  
    varipaddress = "210.211.252.1";  
    varlastname = test;  
    varmobileno = 12345;  
    varpassword = qwert;  
    varphoneno = "";  
    varusername = "";  
})  
 
转换** VarfirstName **如下:
[plain]  
NSDictionary *dataObject=[array objectAtIndex:0];  
NSString *status = [dataObject objectForKey:@"varfirstname"];  
NSLog(@"status -- %@",status);  
NSString *myDecodedS = status;  
NSString *myDecoded = [myDecodedS stringByReplacingPercentEscapesUsingEncoding:NSUTF16StringEncoding];  
NSLog(@"HIIii %@",myDecoded);  
解决方案:
把json复制到text文件中,转换回数据,使用NSJSONSerialization类,
[plain]  
- (void)viewDidLoad {  
    [super viewDidLoad];  
    NSError *error;  
    NSData *data = [[NSData alloc]initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"json" ofType:@"txt"]];  
    id jsonObj = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];  
    NSLog(@"%@",jsonObj);  
    NSLog(@"%@",jsonObj[0][@"varfirstname"]);  
}  
 
log输出如下:
[plain]  
2013-02-01 22:47:40.361 JSONExperiment[4200:c07] (  
        {  
        0 = 41;  
        1 = "\U8a00\U3046";  
        10 = "2013-01-30";  
        11 = "2013-01-30";  
        12 = "210.211.252.1";  
        2 = test;  
        3 = "\U5730";  
        4 = "abc@gmail.com";  
        5 = qwert;  
        6 = 12345;  
        7 = Enable;  
        8 = "";  
        9 = Enable;  
        "date_edit" = "2013-01-30";  
        "date_insert" = "2013-01-30";  
        enumstatus = Enable;  
        intid = 41;  
        mobileMessage = Enable;  
        varemailid = "abc@gmail.com";  
        varfirstname = "\U8a00\U3046";  
        varipaddress = "210.211.252.1";  
        varlastname = test;  
        varmobileno = 12345;  
        varpassword = qwert;  
        varphoneno = "";  
        varusername = "\U5730";  
    }  
)  
2013-02-01 22:47:40.363 JSONExperiment[4200:c07] 言う  
 
 
 
补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,