Is it better to use `knife upload` or `knife cookbook from file`

Both of these commands are able to upload environment/roles/databags/cookbooks from a .json file.
Is one preferred over the other?

knife role from file roles/*.json

knife upload --chef-repo-path . roles

I’m aware of the following:

knife upload doesn’t work with ruby files, only json
Eventually chef will be moving to policy files, which will be uploaded with chef upload.

Until then, which command should I be using?