How about moving this to instead be:
```Objective-C
if ([obj conformsToProtocol:@protocol(YKJSONSerializableObject)]) {
  obj = [obj JSONSerializableObject];
}
if ([NSJSONSerialization isValidJSONObject:obj]) {
  return obj;
}
```

Because no valid JSON objects implement our protocol. This would de-duplicate one of the checks.