Coder Social home page Coder Social logo

Decoding array of arrays about himotoki HOT 4 CLOSED

ikesyo avatar ikesyo commented on July 19, 2024 1
Decoding array of arrays

from himotoki.

Comments (4)

toshi0383 avatar toshi0383 commented on July 19, 2024

I ended up writing this code.

infix operator <||<|| : MultiplicationPrecedence

/// - Throws: DecodeError or an arbitrary ErrorType
public func <||<|| <T: Decodable>(e: Extractor, keyPath: KeyPath) throws -> [[T]] {
    let json: [String: Any] = try castOrFail(e.rawValue)
    let array: [Any] = try castOrFail(json[keyPath.components.joined(separator: ".")])
    return try array.map { c -> [T] in
        return try castOrFail(c)
    }
}

I would add this to your App, rather than to Himotoki. I think it's better to keep the core code small.

I also needed to add Optional version of castOrFail to suppress the warning that says Expression implicitly coerced from 'Any?' to Any.

public func castOrFail<T>(_ any: Any?) throws -> T {
    guard let result = any as? T else {
        throw typeMismatch("\(T.self)", actual: any)
    }
    return result
}

So now you can do this.

extension Summary: Decodable {
  static func decode(_ e: Extractor) throws -> Summary {
    return try Summary(items: e <||<|| "items")
  }
}

from himotoki.

ikesyo avatar ikesyo commented on July 19, 2024

Sorry for the late response, and thanks to @toshi0383 for sharing your way!

Seems that this is a duplicate of #149 and I'd rather write something like this: #149 (comment).

from himotoki.

toshi0383 avatar toshi0383 commented on July 19, 2024

Wow, that looks neat😮

from himotoki.

oronbz avatar oronbz commented on July 19, 2024

Thank you both guys, I'll have a look at both solutions

from himotoki.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.