찾다

 >  Q&A  >  본문

objective-c - iOS json数据打印解析

黄舟黄舟2772일 전825

모든 응답(4)나는 대답할 것이다

  • 怪我咯

    怪我咯2017-04-17 16:55:08

    <올>

  • 이것은 실제로 바이너리가 아니지만 유니코드 인코딩입니다. lldb에서 p 명령을 사용하거나 셸에서 echo 명령을 사용하여 이러한 인코딩을 인쇄할 수 있습니다. 읽을 수 있는 중국어를 인쇄해 보세요.

  • iOS 5부터(검증은 없지만 초기 인쇄 배열 및 사전은 현재 인쇄 개체, <이름: 메모리 주소>의 표시와 일치함) 인쇄 배열 및 사전에 특정 데이터 구조가 표시됩니다. ( description 메서드), 이는 디버깅에 더 편리하지만 문자열을 인쇄할 때 처리가 수행되지 않습니다(예: 여기에서 문자 이스케이프 처리). 디버깅 전용이므로 특정 문자열을 출력할 때 해당 문자열의 deciption 메소드를 호출하면 읽을 수 있는 중국어로 이스케이프됩니다. 즉 처리 시 자동으로 이스케이프됩니다. 구체적으로 말하면 사용자가 직접 변경할 필요는 없습니다.

  • 콘솔에 중국어를 표시해야 하는 경우 이렇게 할 수 있습니다. NSLog(@"%@",[NSString stringWithCString:[[dictionary Description] cStringUsingEncoding:NSUTF8StringEncoding] 인코딩:NSNonLossyASCIIStringEncoding]) ; ;설명 메소드를 재정의할 수도 있습니다. 그러나 나는 개인적으로 이것이 필요하지 않다고 생각합니다.

  • 보충: 최근 p 명령을 사용할 때 p "\U4e3d\U5c71"에서 error: incomplete universal 오류를 보고하는 것을 발견했습니다. 이 형식으로 인쇄할 때 문자 이름, u의 대소문자가 다른 것으로 확인되면 형식은 p "\u4e3d\u5c71"(4자리)여야 합니다. ) 또는 p "\U00004e3d\U00005c71"(8자리). 명확한 텍스트 설명은 발견되지 않았지만 소문자 버전은 BMK[NSString and Unicode]이며 기본값은 plane 0이고 처음 네 자리 숫자는 0인 것으로 추론할 수 있습니다. 기본적으로.

  • 회신하다
    0
  • 怪我咯

    怪我咯2017-04-17 16:55:08

    json을 사전으로 변환하고 키 값을 기반으로 데이터를 얻습니다

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-17 16:55:08

    iOS 개발 초보자가 화를 내며 대답했습니다.
    먼저 정정하겠습니다. "\u8bc4\u8bba\u6807\u9898"는 언급된 "바이너리"가 아니라 유니코드 인코딩입니다.
    그럼 유니코드를 해독해서 중국어로 바꿔보세요~ 이 문제를 해결하는 방법은 아마 두 가지가 있을 거에요~

    <올>
  • 온라인 변환 도구를 사용하세요. Baidu에는 많은 검색어가 있으므로 구체적인 예를 제시하지는 않겠습니다.

  • 변환을 위한 도구 클래스를 작성하고 아래 코드를 붙여넣으세요.

  • - (void)viewDidLoad {
        [슈퍼 viewDidLoad];
        NSString *unicodeString = @"\u8bc4\u8bba\u6807\u9898";
        NSLog(@"%@", [self replacementUnicode:unicodeString]);
    }
    
    // 유니코드 인코딩을 중국어로 변환
    - (NSString *)replaceUnicode:(NSString *)unicodeStr {
        NSString *tempStr1 = [unicodeStr stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"];
        NSString *tempStr2 = [tempStr1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];
        NSString *tempStr3 = [[@"\"" stringByAppendingString:tempStr2] stringByAppendingString:@"\""];
        NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding];
        
        NSString* returnStr = [NSPropertyListSerialization propertyListFromData:tempData
                                                               mutabilityOption:NSPropertyListImmutable
                                                                         형식:NULL
                                                               오류설명:NULL];
    
        return [returnStr stringByReplacingOccurrencesOfString:@"\\r\\n" withString:@"\n"];
    }

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-17 16:55:08

    lldb에 직접 게시

    회신하다
    0
  • 취소회신하다