CommandLineToolkit
..
2 года назад
3 года назад
3 года назад
3 года назад
2 года назад
README.md
JSONStream
JSONStream API allows you to parse JSON stream on the fly.
// This class will process all parsed JSON objectsclass MyStreamObjectHandler: JSONReaderEventStream { func newArray(_ array: NSArray, data: Data) { // My stream does not have arrays, so I can just ignore this callback }
func newObject(_ object: NSDictionary, data: Data) { // My stream has objects. I can use provided `Data` to `JSONDecode` it into my Swift models, // or I can use provided `NSDictionary` to access its fields. }}
let queue = OperationQueue()
// create stream partslet streamParts = JSONStreamFactory.create(eventStream: MyStreamObjectHandler())
// read bytes in background and feed them into streamParts.appendableStreamqueue.addOperation { let inputFileHandle = FileHandle... // imagine we have something to read from while true { let data = inputFileHandle.availableData // this will block until new data is available if data.isEmpty { // no data means EOF streamParts.appendableStream.close() // we mark stream as closed - no new data will be appended! break } else { streamParts.appendableStream.append(data) } }}
// parse JSON stream in background tooqueue.addOperation { do { try streamParts.jsonReader.start() } catch { print("JSON stream error: \(error)") }}
queue.waitUntilAllOperationsAreFinished()