r.data[0] will throw index out of bounds. Instead: return !(r == default(RootObject) || r.data.Length == 0);
json2csharp gives a good base, but I’d recommend using tags and C#-style naming for the objects instead.
E.G.
public class Datum
{
[JsonProperty("id")] public string ID { get; set; }
[JsonProperty("user_id")] public string UserID { get; set; }
}
I’d also call RootObject something else like HelixStreamsResponse, so it’s immediately clear, and you don’t end up with multiple RootObjects for different requests.