2013-02-02 23 views
0

我正面臨一些可憐的問題。我在這裏分享我的代碼和響應..JSON響應在NSArray中轉換後顯示空白值

JSON響應:

JSON登錄:

[ 
    { 
    "0": "41", 
    "intid": "41", 
    "1": "\u8a00\u3046", 
    "varfirstname": "\u8a00\u3046", 
    "2": "test", 
    "varlastname": "test", 
    "3": "\u5730", 
    "varusername": "\u5730", 
    "4": "[email protected]", 
    "varemailid": "[email protected]", 
    "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 ..

// Create new SBJSON parser object 
SBJSON *parser = [[SBJSON alloc] init]; 
NSArray *array = (NSArray *) [parser objectWithString:json_string error:nil]; 
NSLog(@"Array === %@",array); 

And This Array顯示此數據:

日誌:

Array === 
(
    { 
    0 = 41; 
    1 = ""; 
    10 = "2013-01-30"; 
    11 = "2013-01-30"; 
    12 = "210.211.252.1"; 
    2 = test; 
    3 = ""; 
    4 = "[email protected]"; 
    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 = "[email protected]"; 
    varfirstname = ""; 
    varipaddress = "210.211.252.1"; 
    varlastname = test; 
    varmobileno = 12345; 
    varpassword = qwert; 
    varphoneno = ""; 
    varusername = ""; 
}) 

而且我轉換我的VarfirstName像這樣

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響應...... 我不是得到我做錯了什麼?

+0

你正在獲得數組。但你是否得到dataObject?記錄字典。 –

+0

它來自同一個人..沒有區別在那... – Vivek2012

+0

什麼是空白? varfirstname? – rdelmar

回答

1

我複製你的JSON到一個文本文件,將其轉換回數據,並用NSJSONSerialization類,並能正常工作:

- (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"]); 
} 

日誌輸出是:

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 = "[email protected]"; 
     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 = "[email protected]"; 
     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] 言う 
0

varfirstname密鑰存儲結果作爲Unicode字符串

試試這個,我覺得你的問題解決

字符串

NSString *status = [NSString stringWithUTF8String:[[dataObject objectForKey:@"varfirstname"] UTF8String]]); 

NSLog(@"status -- %@",status); 

對JSON 試試這個--- ----------------------------------

SBJsonParser *parser = [[SBJsonParser alloc] init]; 

NSURLRequest *UrlRequest = [NSURLRequest requestWithURL: [NSURL URLWithString:@"http://eappointmentbook.net/iphone/getAccountInfo.php?userid=41&usertype=Normal%20User"]]; 

NSData *response = [NSURLConnection sendSynchronousRequest:UrlRequest returningResponse:nil error:nil]; 

NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; 

NSArray *status = [parser objectWithString:json_string error:nil]; 


NSLog(@"status Array %@ " , status); 

NSLog(@"status varfirstname %@ " , [[status objectAtIndex:0]objectForKey:@"varfirstname"]); 
+0

其不工作的人..其實我認爲雖然我把它轉換成NSArray * array =(NSArray *)[parser objectWithString: json_string]像這樣它顯示其值空白。所以我沒有得到任何價值..你能幫我嗎? – Vivek2012

+0

看到我的更新回答 – Deepesh

+0

我認爲你的問題解決了嗎? – Deepesh

0

我下載了最新的version of SBJSON 3.1.1,並在文件中保存您的JSON字符串,它爲我工作

SBJsonParser *parser = [[SBJsonParser alloc] init]; 
NSString *str =[NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"File" ofType:@"txt"] encoding:NSUTF8StringEncoding error:nil]; 
NSLog(@"%@",str); 
NSArray *array = (NSArray *) [parser objectWithString:str error:nil]; 
NSLog(@"Array === %@",array); 

這裏是我的日誌

2013-02-02 12:20:31.931 MyTab[1343:c07] [{"0":"41","intid":"41","1":"\u8a00\u3046","varfirstname":"\u8a00\u3046","2":"test","varlastname":"test","3":"\u5730","varusername":"\u5730","4":"[email protected]","varemailid":"[email protected]","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"}] 
2013-02-02 12:20:31.933 MyTab[1343:c07] Array === (
     { 
     0 = 41; 
     1 = "\U8a00\U3046"; 
     10 = "2013-01-30"; 
     11 = "2013-01-30"; 
     12 = "210.211.252.1"; 
     2 = test; 
     3 = "\U5730"; 
     4 = "[email protected]"; 
     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 = "[email protected]"; 
     varfirstname = "\U8a00\U3046"; 
     varipaddress = "210.211.252.1"; 
     varlastname = test; 
     varmobileno = 12345; 
     varpassword = qwert; 
     varphoneno = ""; 
     varusername = "\U5730"; 
    } 
) 
+0

可以共享代碼以使TXT文件.. – Vivek2012

+0

我還沒有在代碼中創建這個文件,我只是從文件菜單創建一個新文件,並在其中添加了你的字符串 –

+0

@ Vivek2012這裏是示例項目http://www.4shared.com/zip/T8CFd1FF/ MyTab.html –