Seems like a bad way to do it (creating two correlated lists) but I'm assuming you have your reasons.
I'd parse the JSON string (which has a typo in your example, it's missing a comma between the two objects) into a strongly-typed object and then use a couple of LINQ queries to get the two lists.
void Main()
{
string json = "{\"People\":[{\"FirstName\":\"Hans\",\"LastName\":\"Olo\"},{\"FirstName\":\"Jimmy\",\"LastName\":\"Crackedcorn\"}]}";
var result = JsonConvert.DeserializeObject<RootObject>(json);
var firstNames = result.People.Select (p => p.FirstName).ToList();
var lastNames = result.People.Select (p => p.LastName).ToList();
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class RootObject
{
public List<Person> People { get; set; }
}