JSONDecoder πŸ“™

YaR LabΒ·2023λ…„ 6μ›” 25일
0

swiftΒ πŸ“™

λͺ©λ‘ 보기
1/16
post-thumbnail

1️⃣ μ •μ˜

JSON κ°μ²΄μ—μ„œ 데이터 μœ ν˜•μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό λ””μ½”λ”©ν•˜λŠ” 객체

2️⃣ 예제

// λ‹€μŒ μ˜ˆμ œλŠ” JSON κ°μ²΄μ—μ„œ κ°„λ‹¨ν•œ GroceryProduct μœ ν˜•μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό λ””μ½”λ”©ν•˜λŠ” 방법
// ν•΄λ‹Ή μœ ν˜•μ€ Codable을 μ±„νƒν•˜μ—¬ JSONDecoder μΈμŠ€ν„΄μŠ€λ₯Ό μ‚¬μš©ν•˜μ—¬ λ””μ½”λ”©ν•  수 μžˆλ„λ‘ 함

struct GroceryProduct: Codable {
    var name: String
    var points: Int
    var description: String?
}


let json = """
{
    "name": "Durian",
    "points": 600,
    "description": "A fruit with a distinctive scent."
}
""".data(using: .utf8)!


let decoder = JSONDecoder()
let product = try decoder.decode(GroceryProduct.self, from: json)


print(product.name) // Prints "Durian"

πŸ“Œ init()

κΈ°λ³Έ ν˜•μ‹ μ„€μ •κ³Ό λ””μ½”λ”© μ „λž΅μ„ μ‚¬μš©ν•˜μ—¬ μƒˆλ‘œμš΄ μž¬μ‚¬μš© κ°€λŠ₯ν•œ JSON 디코더λ₯Ό 생성

πŸ“Œ decode

μ§€μ •ν•œ νƒ€μž…μœΌλ‘œ λ””μ½”λ”©λœ JSON 객체의 값을 λ°˜ν™˜ν•˜λŠ” λ©”μ„œλ“œ

func decode<T>(
    _ type: T.Type,
    from data: Data
) throws -> T where T : Decodable
  • Parameters
    • type : 제곡된 JSON κ°μ²΄λ‘œλΆ€ν„° λ””μ½”λ”©ν•  κ°’μ˜ νƒ€μž…
    • data : λ””μ½”λ”©ν•  JSON 객체
  • Return Value
    • λ§Œμ•½ 디코더가 데이터λ₯Ό 해석할 수 μžˆλŠ” 경우, μ§€μ •λœ μœ ν˜•μ˜ 값이 λ°˜ν™˜
  • λ§Œμ•½ 데이터가 μœ νš¨ν•œ JSON이 μ•„λ‹Œ 경우, 이 λ©”μ„œλ“œλŠ” DecodingError.dataCorrupted(_:) μ—λŸ¬λ₯Ό throw함
  • JSON λ‚΄μ˜ 값이 디코딩에 μ‹€νŒ¨ν•˜λŠ” 경우, ν•΄λ‹Ήν•˜λŠ” μ—λŸ¬κ°€ throw됨

μΆœμ²˜πŸ“š

🍎Apple Docs: JSONDecoder

0개의 λŒ“κΈ€