Computer >> 컴퓨터 >  >> 프로그램 작성 >> IOS

iPhone/iOS에서 JSON 객체를 구문 분석하는 방법은 무엇입니까?

<시간/>

JSON은 Javascript 객체 표기법을 나타냅니다. API 또는 기타 서비스를 처리할 때 대부분의 데이터는 JSON 형식으로 반환되며 사용 가능하고 지원되는 언어 형식으로 변환해야 합니다.

iOS의 Foundation 프레임워크는 JSON을 사전, 문자열, Bool 등과 같은 지원 형식으로 변환하기 위해 JSONSerialization 클래스를 제공합니다.

JSONSerialization 클래스는 json을 구문 분석하고 결과로 Any를 반환하는 jsonObject(with:options:) 메서드를 제공하며 데이터를 구문 분석할 수 없는 경우 오류가 발생합니다.

// Example JSON:
/*
{
   "age": 42.0,
   "name": {
      "firstName": “tut”
   }
}
*/

다른 예를 통해 이를 살펴보겠습니다. API 호출에서 데이터를 얻었다고 가정해 보겠습니다. 이제 이 데이터를 구문 분석하기 위해 JSONSerialization을 사용할 것입니다. jsonObject(포함:옵션:)

if let data = data, let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] { }

// 이제 위의 json 객체는 수신된 데이터를 String과 Any의 사전으로 포함하거나 if let 블록을 else로 나간다

// json에 "Student" 키가 포함되어 있고 이에 연결된 값이 사전이라고 가정합니다.

guard let student = json[“Student”] as? [String: Any] else { return }

이것이 json을 구문 분석하고 값을 얻는 방법입니다. 모델과 이니셜라이저를 사용하여 이를 더욱 향상시킬 수 있습니다. 로컬 json 파일을 생성한 다음 이를 구문 분석하여 이에 대한 예를 살펴보겠습니다.

다음과 같은 데이터로 json 파일을 생성하여 Exercises.json으로 저장해 보겠습니다.

{
   "Warmup": {
      "Exercises": [
         {
            "Name": "Neck Strech",
            "images": [
               "http:sdf.com",
               "sdf",
               "sdf",
               "sdf"
            ],
          "time": 30
         }
      ]
   }
}

이제 이 로컬 json을 구문 분석하고 다음 코드를 사용하여 결과를 인쇄합니다 -

if let filePath = Bundle.main.path(forResource: "exerciseData", ofType: "json") {
   do {
      let data = try Data(contentsOf: URL(fileURLWithPath: filePath), options: .mappedIfSafe)
      let jsonResult = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves)
      if let exercises = jsonResult as? [String:AnyObject] {
         if let warmups = exercises["Warmup"] as? [String:AnyObject] {
            print(warmups)
         }
      }
   } catch {
      print(error.localizedDescription)
   }
}

이 코드를 실행하면 다음과 같은 결과가 나옵니다.

iPhone/iOS에서 JSON 객체를 구문 분석하는 방법은 무엇입니까?