티스토리 뷰

반응형

프로젝트 진행하면서 Local에 저정된 Json 파일을 가져올 때가 있습니다. 

이때는 다음과 같은 방식으로 작업하면 됩니다.


forResource에는 Json 파일명 들어가는 것만 주의하시면 사용하는데 어려움이 없을 것입니다.

Json 파일 가져오기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// DB Data load Json File
func loadJsonFile() -> Array<DBData>{
   
     var dbData: Array<DBData> = Array<DBData>()
     do {
         if let file  = Bundle.main.url(forResource: "DBData", withExtension: "json"){
 
            let data  = try Data(contentsOf: file)
            let json = try JSONSerialization.jsonObject(with: data, options: [])
 
            if let objects = json as? [Any]{
               for object in objects {
                   dbData.append(DBData.dataFormJSONObject(json: object as! [String : AnyObject])!)
               }
            } else{
             print("JSON is invalid")
            }
         }else{
               print("no file")
          }
        }  catch {
            print(error.localizedDescription)
     }
     return dbData
}
 



[Json 파일]


   {

       "name":"Faith", 

       "address":"none"

   }, 

   {

      "name":"people",

      "address":"none"

   } 

]


이런 식으로 구성된 json 파일을 가져와 DBData class에 넣어주는 로직입니다.

실제로 json 가져오는 부분은 다음과 같습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
do {
    if let file  = Bundle.main.url(forResource: "DBData", withExtension: "json"){
       let data  = try Data(contentsOf: file)
       let json = try JSONSerialization.jsonObject(with: data, options: [])
 
       if let objects = json as? [Any]{
           for object in objects {
               dbData.append(<JsonFileInputClass>.dataFormJSONObject(json: object as! [String : AnyObject])!)
           }
       } else{
           print("JSON is invalid")
       }
    }else{
        print("no file")
    }
}  catch {
    print(error.localizedDescription)
 
}



정리

Json 활용을 REST API 가 아닌 내부 파일로 사용하는 경우도 발생합니다. 위에서 공유드린 내용으로 대응하시면 업무진행하는데 어려움이 없을 것으로 보입니다.



반응형
댓글