首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Graph API计算Facebook的“赞”数

使用Graph API计算Facebook的“赞”数
EN

Stack Overflow用户
提问于 2010-10-23 14:28:11
回答 2查看 4.1K关注 0票数 4

脸书修复了Graph API中的/likes/likes现在返回喜欢图形中特定对象(照片、相册等)的用户的完整列表。在以前,它只返回3-5个用户。

我的问题是,在不解析整个JSON并获得元素计数的情况下,如何计算"likes“的总数?我只对“赞”数感兴趣;我对点赞的用户不感兴趣。

仅仅计算整个JSON数据集似乎有点昂贵。

例如:https://graph.facebook.com/161820597180936/likes

这张照片很像1,000+喜欢的。

EN

回答 2

Stack Overflow用户

发布于 2011-02-01 18:18:08

既然字符串是JSON,为什么不把它转换成一个标准的.net对象,并在它创建的数组上使用.Count。然后将此信息缓存15分钟或更长时间(取决于您想要的信息的陈旧程度)。

上面的方法相当繁重,因为你基本上要搜索一个字符串未知的次数,返回一个索引,将它与一个int进行比较,添加另一个索引等等。并且上面的C#不起作用(假设您正在演示的是C# )。

改用下面这样的代码:

代码语言:javascript
运行
复制
public static T FromJson<T>(this string s)
{
    var ser = new System.Web.Script.Serialization.JavaScriptSerializer.JavaScriptSerializer();
    return ser.Deserialize<T>(s);
}

这个方法是一个扩展方法,它接受格式正确的JSON字符串,并将其转换为对象T,例如

代码语言:javascript
运行
复制
    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.

我不确定它的性能,没有做任何测试,但对我来说,它看起来更整洁,更具可读性。既然您正在缓存数据,那么我将使用readable,而不是前面的方法。

票数 2
EN

Stack Overflow用户

发布于 2010-12-28 06:33:50

为什么解析整个数据集的成本会很高?这应该需要几毫秒:

代码语言:javascript
运行
复制
public static int CountLikes(string dataSet)
{
    int i = 0;
    int j = 0;
    while ((i = dataSet.IndexOf('"id":', i)) != -1)
    {
        i += 5;
        j++;
    }
    return j;
}

您也可以添加参数limit=#,例如:

https://graph.facebook.com/161820597180936/likes?limit=1000

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4002817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档