2017-12-16 11 views
1

JSON 파일을 읽으려고하고 있지만 "ParsedText"를 읽으려고하면 오류가 계속 발생합니다.
먼저 serialize 된 JSON 데이터를 [String: Any] 유형의 사전으로 변환 한 다음 dictionary["ParsedResults"] 값을 읽고이를 [String: Any] 유형의 사전으로 변환하려고 시도하지만 항상 실패합니다.Swift에서 JSON 파일에서 읽기

다음
{ 
    ErrorDetails = "<null>"; 
    ErrorMessage = "<null>"; 
    IsErroredOnProcessing = 0; 
    OCRExitCode = 1; 
    ParsedResults = ({ 
      ErrorDetails = ""; 
      ErrorMessage = ""; 
      FileParseExitCode = 1; 
      ParsedText = "Sample text"; 
      TextOverlay = { 
       HasOverlay = 0; 
       Lines = (); 
       Message = "Text overlay is not provided as it is not requested"; 
      }; 
     }); 
    ProcessingTimeInMilliseconds = 869; 
    SearchablePDFURL = "Searchable PDF not generated as it was not requested."; 
} 

가 빠른 기능의 일부입니다 : 여기

는 JSON 파일입니다

do { 
    //create json object from data 
    let dictionary = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.allowFragments) as! [String: Any] 

    for (key, value) in dictionary { 
     print("KEY: \(key)") 
     print("VALUE: \(value)") 
    } 

    let parsedResults = dictionary["ParsedResults"] as! [String: Any] 
    print("parsedResults: \(parsedResults)") 

    } catch let error { 
     print("ERROR: Could not serialize jSON Data: \(error.localizedDescription)") 
    } 
    } 
+3

JSON을 읽으십시오. 괄호는 배열을 의미합니다. 중괄호는 사전을 의미합니다. – rmaddy

+3

이것은 유효한 JSON이 아닙니다. – ryantxr

+0

JSON에 세미콜론이 없습니다. JSON에서 키와 값을 분리하지 않습니다. –

답변

0
, 당신의 말했다--하는 JSON 파일는 JSON 이미 주석으로하지 않습니다

체재.

고전적인 텍스트 기반 plist 형식 인 것 같습니다. 당신이 그대로 파일을 읽을 수 없다면, 당신은 PropertyListSerialization를 사용할 수 있습니다

import Foundation 

let data = """ 
{ 
    ErrorDetails = "<null>"; 
    ErrorMessage = "<null>"; 
    IsErroredOnProcessing = 0; 
    OCRExitCode = 1; 
    ParsedResults = ({ 
      ErrorDetails = ""; 
      ErrorMessage = ""; 
      FileParseExitCode = 1; 
      ParsedText = "Sample text"; 
      TextOverlay = { 
       HasOverlay = 0; 
       Lines = (); 
       Message = "Text overlay is not provided as it is not requested"; 
      }; 
     }); 
    ProcessingTimeInMilliseconds = 869; 
    SearchablePDFURL = "Searchable PDF not generated as it was not requested."; 
} 
""".data(using: .utf8) 

do { 
    //create property list object from data 
    let dictionary = try PropertyListSerialization.propertyList(from: data!, options: [], format: nil) as! [String: Any] 

    for (key, value) in dictionary { 
     print("KEY: \(key)") 
     print("VALUE: \(value)") 
    } 

    let parsedResults = dictionary["ParsedResults"] as! [[String: Any]] //<- See Larme's comment. 
    print("parsedResults: \(parsedResults)") 

} catch let error { 
    print("ERROR: Could not deserialize plist Data: \(error.localizedDescription)") 
} 

하지만 난 당신이 이러한 파일을 생성하는 부분을 확인하는 것이 좋습니다, 유효한 JSON 파일을 생성하기 위해 그것을 해결.