Поскольку строка представляет собой JSON, почему бы не преобразовать ее в стандартный объект .net и использовать .Count для создаваемого массива. Затем кешируйте эту информацию в течение 15 или более минут (в зависимости от того, какую устаревшую информацию вы хотите получить).
Вышеописанный метод довольно сложен, так как вы по сути собираетесь искать строку неизвестное количество раз, возвращать индекс, сравнивать его с int, добавлять другой индекс и так далее. А вышеприведенный C # не работает (при условии, что вы используете C #).
Вместо этого используйте что-то вроде этого:
public static T FromJson<T>(this string s)
{
var ser = new System.Web.Script.Serialization.JavaScriptSerializer.JavaScriptSerializer();
return ser.Deserialize<T>(s);
}
где этот метод является методом расширения, который берет правильно отформатированную строку JSON и преобразует ее в объект T, например
var result = // call facebook here and get your response string
List<FacebookLikes> likes = result.FromJson <List<FacebookLikes>>();
Response.Write(likes.Count.ToString());
// now cache the likes somewhere, and get from cache next time.
Я не уверен в производительности этого, не проводил никаких испытаний, но для меня это выглядит намного аккуратнее и намного более читабельным. И, видя, как вы кешируете данные, я бы начал читать с помощью предыдущего метода.