2017-02-07 9 views
0

と私はこれから値を取得したいです。NSJSONSerializationは絵文字で動作しません

ストリング

"[{\" VisitorId \ ":\" dbd1c1d6-8348-4674-9e48-65137bdc5c14 \」、\ "OperatorID \":ヌル、\ "VisitorSignalId \"。 "" \ "Messagetext \":\ "ksksksksksk はチャットに参加しました!\"、\ "IsJoin \":\ "6c454fc2-cf74-4010-aecd-93d93408ad24 \メッセージタイプ:\ "MessageTime \":\ "2017-02-07 05:10:28 \"、\ "File \":null、\ "MessageType \":\ "JoinMessage \"、\ "Name \": \ "IP \"、\ "IP \":\ "123.231.110.188 \"、\ "ページ\":\ "http://www.sathyabaman.com/ \"、\ " \ "FileOploadDetails \":null、\ "FirstOperatorName \":null、\ "OperatorCo:null、\" CurrentOpImage \ ": "Bosswer":null、\ "Mobile \":null、\ "iso_code \":null、\ " ":null、\" VisitorId \ ":\" db \\ " \ "メッセージ\":\ "メッセージ\":\ "メッセージ\":\ "メッセージ時間\":\ "2017-02-07 05:10:58 \"、\ "メッセージ\ \ "メッセージタイプ\":\ "標準メッセージ\"、\ "名前\":\ "メール\":\ "[email protected] \"、\ "IP \": \ "Image \":null、\ "CurrentOpImage \":null、\ "123.231.110.188 \"、\ "Page \":\ "http://www.sathyabaman.com/ \ "FileUploadDetails \":null、\ "FirstOperatorName \":null、\ "OperatorCount \":1、\ "RequestTranscript \":false、\ "Country \":null、\ "OS \":null、\ "Broswer \ "モバイル\":null、\ "iso_code \":null}、\ "訪問者ID":null、\ "オペレータID \":\ "81aebba9-ddc3-4f58-b1af-ac912d23a41e \": \ "VisitorSignalId \":null、\ "タイプ\":\ "オペレータ\"、\ "メッセテキストテキスト\":\ "どうすれば今日あなたを助けることができますか?\"、\ "IsJoin \":false、\ "メッセージ\ "Message \":\ "MessageType \":\ "NormalMessage \"、\ "Name \":\ "sathya \":\ "2017-02-07 10:41:11 \"、 \ "Image \":null、\ "CurrentOpImage \":null、\ "IP \":NULL、\ "ページ\ \ "FileUploadDetails \":null、\ "FirstOperatorName \":\ "sathya \"、\ "OperatorCount \":1、\ "RequestTranscript \":null、\ "Country \":null、\ "OS \": null、\ "Broswer \":null、\ "モバイル\":null、\ "iso_code \":null}、\ "VisitorId \":\ "dbd1c1d6-8348-4674-9e48-65137bdc5c14 \"、\ " \ "VisitorSignal \":\ "VisitorSignalId \":\ "6c454fc2-cf74-4010-aecd-93d93408ad24 \"、\ "タイプ\":\ "訪問者\"、\ "Messagetext \":\ "ビジター は、 2/7/2017 5:11:53 AM \ "、\"ファイル\ ":null、\"メッセージタイプ\ "、 :\ "IPアドレス:\" 123.231.110.188 \ "、\" IPアドレス:\ "、\" IPアドレス:\ " "ページ\":\ "http://www.sathyabaman.com/ \"、\ "評価\":\ "評価なし\"、\ "イメージ\":null、\ "CurrentOpIm 1 "、" RequestTranscript ":false、\" Country \ ":null、\" OS \ "、\" FileUploadDetails \ ":NULL、\" FirstOperatorName \ "、null"、 "Broswer":null、\ "モバイル\":null、\ "iso_code \":null}、\ "VisitorId \":null、\ "OperatorID \":\ "81aebba9-ddc3- \ "タイプ\":\ "オペレータ\"、\ "メッセゲットテキスト\":\ "ハイ\"、\ "アイジョイン\":偽、\ "\"、\ "ビジターシグナル\ MessageType \ ":\" NormalMessage \ "、\" Name \ ":\" sathya \ ":MessageTime \":\ "2017-02-07 10:47:54 \"、\ "ファイル\ \ "Image \":null、\ "CurrentOpImage \":null、\ "IP \":NULL、\ "ページ\ \ "FileUploadDetails \":null、\ "FirstOperatorName \":\ "sathya \"、\ "OperatorCount \":1、\ "RequestTranscript \":null、\ "Country \":null、\ "OS \": null、\ "移動\":null、\ "iso_code \":null}、\ "VisitorId \":null、\ "OperatorID \":\ "81aebba9-ddc3-4f58-あなたは今日あなたを助けることができますか? どうすればいいですか?\ "メッセージタイプ\":\ "メッセージタイプ\":\ "2017-02-07 10:50:07 \"、\ "ファイル\":null、\ "メッセージタイプ\":\ "NormalMessage \ "IP \":ヌル、\ "ページ\":ヌル、\ "評価\":ヌル、\ "イメージ\"、\ "名前\":\ "sathya \"、 \ "FileOploadDetails \":null、\ "FirstOperatorName \":\ "Sathya \"、\ "OperatorCount \":1、\ "RequestTranscript \":null、\ "CurrentOpImage \ iso_code \ ":null}、{\" VisitorId \ ":null、\" Broswer \ ":null、\"モバイル\ ":null、\" OS \ \ "タイプ\":\ "オペレータ\"、\ "Messagetext \":\ "\"、\ "VisitorSignalId \":\ "81 \ \ "MessageType \":\ "MessageTime \":\ "NormalMessage \"、\ "IsJoin \":\ "MessageTime \":\ "2017-02-07 10:57:13 \"、\ "ファイル\ \ "IP \":null、\ "ページ\":null、\ "評価\":null、\ "イメージ\":\ "名前\":\ " \ "FileOploadDetails \":null、\ "FirstOperatorName \":\ "sathya \"、\ "OperatorCount \":1、\ "RequestTranscript \":null、\ "Country \ ":null、\" OS \ ":null、\" Broswer \ ":null、\" Mobiル\ ":ヌル、\" iso_code \ ":ヌル}]"

方法

+ (void) showCurrentHistory:(NSString *) historyString { 

    NSString* processed = [historyString stringByReplacingOccurrencesOfString:@"\\\"" withString:@"\""]; 

    NSString* withotExtras = [[processed substringFromIndex:1] substringToIndex:[processed length] - 2]; 
    NSData *data = [[NSData alloc] initWithBytes:[withotExtras UTF8String] length:withotExtras.length]; 
    NSError *error; 

    NSMutableArray* jsonArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error]; 

    for (NSDictionary *dic in jsonArray) { 
     NSString *VisitorId   = [dic objectForKey:@"VisitorId"]; 
     NSString *VisitorSignalId = [dic objectForKey:@"VisitorSignalId"]; 
     NSString *Type    = [dic objectForKey:@"Type"]; 
     NSString *Messagetext  = [dic objectForKey:@"Messagetext"]; 
     NSString *MessageType  = [dic objectForKey:@"MessageType"]; 
     NSString *MessageTime  = [dic objectForKey:@"MessageTime"]; 
     NSString *Image    = [dic objectForKey:@"Image"]; 
     NSString *FileUploadDetails = [dic objectForKey:@"FileUploadDetails"]; 
     NSString *FirstOperatorName = [dic objectForKey:@"FirstOperatorName"]; 
     NSString *Rating   = [dic objectForKey:@"Rating"]; 

     NSLog(@"----------------------- Current Chat History --------------------------------"); 
     NSLog(@"VisitorId   : %@" , VisitorId); 
     NSLog(@"VisitorSignalId  : %@" , VisitorSignalId); 
     NSLog(@"Type    : %@" , Type); 
     NSLog(@"Messagetext   : %@" , Messagetext); 
     NSLog(@"MessageType   : %@" , MessageType); 
     NSLog(@"MessageTime   : %@" , MessageTime); 
     NSLog(@"Image    : %@" , Image); 
     NSLog(@"FileUploadDetails : %@" , FileUploadDetails); 
     NSLog(@"FirstOperatorName : %@" , FirstOperatorName); 
     NSLog(@"Rating    : %@" , Rating); 
     NSLog(@"------------------------------------------------------------------------------"); 

     MessageItemObject *item = [[MessageItemObject alloc] init]; 
     [item setVisitorId:VisitorId]; 
     [item setVisitorSignalId:VisitorSignalId]; 
     [item setType:Type]; 
     [item setMessagetext:Messagetext]; 
     [item setMessageType:MessageType]; 
     [item setMessageTime:MessageTime]; 
     [item setImage:Image]; 
     [item setFileUploadDetails:FileUploadDetails]; 
     [item setFirstOperatorName:FirstOperatorName]; 
     [item setRating:Rating]; 

     if (messagesList.count == 0) { 
      messagesList = [[NSMutableArray alloc] init]; 
      [messagesList addObject:item]; 

      NSMutableDictionary *dic = [NSMutableDictionary dictionary]; 
      [dic setValue:@"Adding new chatting" forKey:@"Adding new Chatting"]; 

      [[NSNotificationCenter defaultCenter] 
      postNotificationName:@"PassData" 
      object:nil 
      userInfo:dic]; 
     } else { 
      [messagesList addObject:item]; 

      NSMutableDictionary *dic = [NSMutableDictionary dictionary]; 
      [dic setValue:@"Adding new chatting" forKey:@"Adding new Chatting"]; 

      [[NSNotificationCenter defaultCenter] 
      postNotificationName:@"PassData" 
      object:nil 
      userInfo:dic]; 
     } 
    } 
} 

何の絵文字がない場合、この刺さは単一の\絵文字を持っているので、この方法では、正常に動作します、NSJSONSerializationが機能しません。この問題を解決するのに役立つ人もいます。

+0

これをチェックしましたか? http://stackoverflow.com/questions/23814394/nsjsonserialization-and-emoji – User511

+0

あなたがそれを使用しない場合は、空の文字列で "Two Hear絵文字"を置き換える必要があります。または、そのユニコードに置き換えます。 – Wolverine

+0

@ User511はTNXを処理しました。 –

答えて

1

問題は、JSON文字列をハードコーディングして変更することです。JSON文字列を変更せずに直接NSDataに変換してください。

NSData *data = [historyString dataUsingEncoding:NSUTF8StringEncoding]; 
NSError *error; 
NSMutableArray* jsonArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error]; 
NSLog(@"Array - %@", jsonArray); 
1

これを試してください。

NSData *data = [strEmoji dataUsingEncoding:NSNonLossyASCIIStringEncoding]; 
NSString *unicodeString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

以下のようなユニコードの文字列への絵文字と

変換文字列そして、あなたがどこかにその絵文字を表示したい場合、あなたは絵文字に再び変換することができます。

NSData *data = [unicodeString dataUsingEncoding:NSUTF8StringEncoding]; 
NSString *emojiString = [[NSString alloc] initWithData:data encoding:NSNonLossyASCIIStringEncoding]; 
関連する問題