All conditions will return 1, anything wrong? If nothing wrong, rewrite as

```
if (category) {
  std::vector<picojson::value>* categories =
      static_cast<std::vector<picojson::value>*>(user_data);
  categories->push_back(picojson::value(category));
}

return 1;
```