SRT has almost no styling or positioning, and character encoding problems are common. JSON is what APIs and most programming languages read natively. SRT is at home in subtitles that must work almost everywhere; JSON is the usual choice for APIs and data exchanged between programs.
The text is read as UTF-8 or UTF-16, whichever the file is. An older file in another code page is read using the charset it declares, or as Windows-1252 if it declares none, so accented letters in an unlabelled legacy file can come out wrong. A file that is not text, such as the picture-based subtitles of a DVD, is refused instead of being converted to nonsense. The result is a JSON list with one object per cue: its number, start and end as clock times and in milliseconds, and its text.