Facebook 修复了 Graph API 中的 /likes
。 /likes
现在返回喜欢图表中特定对象(照片、相册等)的用户的完整列表。之前,它只返回 3 - 5 个用户。
我的问题是,如何在不解析整个 JSON 并获取元素计数的情况下计算“喜欢”的总数?我只对“喜欢”计数感兴趣;我对点赞的用户不感兴趣。
获取整个 JSON 数据集来计算似乎有点昂贵。
例如:https://graph.facebook.com/161820597180936/likes
这张照片有 1,000 多个赞。
最佳答案
鉴于字符串是 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.
我不确定它的性能,没有做过任何测试,但对我来说它看起来更整洁,更易读。看到您正在缓存数据,那么我会选择可读性高于前一种方法。
关于c# - 使用 Graph API 计算 Facebook "Likes",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4002817/