In json you'd pass something like
{"id":12, "firstname":"pascal","lastname":"ganaye"}
Whereas with a splitter
12|Pascal|GANAYE
Json is
* easy : you can find a library to write and parse it
* standard : it is a documented standard, so people who understand json will understand easily
* extensible : by design json is extensible you can easily add more data and even complex data later.
A
splitter is
* even easier : you can use string.split string.join
* compact: the | version is shorter
* dangerous : what if you have a delimiter in your data
* obscure : 12|Pascal|GANAYE is less human readable than the json version
* less extensible : the splitter won't allow you to pass arrays or inner objects
* riskier : if you insert an extra parameter at the beginning as the parameters are not name there is more mismatch risks.
Overall if the volume of what you send is not too big I would stick with json.
Only if you're sending megabytes and speed is paramount then I might consider something else but then not a splitter but something binary.