From the docs, NSManagedObject doesn't meet NSJSONSerialization's criteria for valid objects:
An object that may be converted to JSON must have the following properties:
The top level object is an NSArray or NSDictionary. All objects are instances of NSString, NSNumber, NSArray, NSDictionary, or NSNull. All dictionary keys are instances of NSString. Numbers are not NaN or infinity.
You can test this by calling isValidJSONObject: