CocoaPods trunk is moving to be read-only. Read more on the blog, there are 14 months to go.
| TestsTested | ✓ | 
| LangLanguage | SwiftSwift | 
| License | MIT | 
| ReleasedLast Release | Oct 2016 | 
| SwiftSwift Version | 3.0 | 
| SPMSupports SPM | ✗ | 
Maintained by Zeke Abuhoff.
JSort is a simple framework for parsing JSON data in Swift.
Pass your data (such as the data you get in an HTTP response) into the initializer for a JSort object.
guard let sortedData = JSort(responseData) else { return }As long as you pass in data comprising valid json, you’ll get back a JSort object.
Use a type property of your JSort object to cast its contents to the native Swift type you expect.
guard let responseDictionary = sortedData.dictionary else { return }You can also use subscripts to navigate through the JSON to the level that interests you before casting.
let nestedJSON = sortedData["results"][3]["name"]
guard let name = nestedJSON.string else { return }And that’s it! No having to fuss with NSJSONSerialization or handle all manner of errors. You just turn your data into JSort and your JSort into a native type.
// This function parses data expected to be a simple dictionary of strings.
func parseDictionary(data: Data) -> [String : String]? {
  guard let sortedData = JSort(data) else { return nil }
  if let sortedDictionary = sortedData.dictionary as? [String : String] {
    return sortedDictionary
  }
  return nil
}// This function uses JSort's 'isValid' property to check if JSON data matches the expected structure.
func validateJSON(data: Data) -> Bool {
  guard let _ = JSort(data) else { return false }
  guard validJSON["items"]["businesses"][0]["contact_info"].isValid else { return false }
  guard validJSON["items"]["businesses"][0]["menu"].isValid else { return false }
  return true
}// This function relegates all parsing issues to the error-catching system.
// The error type 'APIError' is presumably defined elsewhere.
func arrayFromJSON(data: Data) -> throws [Int] {
  guard let intArray = JSort(data)?.array as? [Int] else { throw APIError.parsing }
  return intArray
}