This
var result = client4.Execute<List<RootObject>>(request4);
looks incorrect - you are not returning a list of RootObjects, you're (hopefully) returning a RootObject hierarchy that has within it, a list of SalesOffice(s)
Your data shows that at least you're getting a SalesOffice, I'm not sure/it's not clear if that's just a snippet of data you've shown or the entire return - If result is being populated correctly, then, I would expect to access the first sales_office by something like:
SalesOffice soFirst = result.sales_offices.first();
btw 'RootObject' as you have defined does not have a 'Data' field/element, so this wont work - I suspect what you meant was more along the lines of
foreach (var j in result.sales_offices)
{
Console.WriteLine(j.state);
}
I must admit, I hate the use of 'var j' there, since you know it's type ie 'SalesOffice' .. overusing var makes code hard to read