首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# Facebook sdk问题的C#动态解析搜索结果

C# Facebook sdk问题的C#动态解析搜索结果
EN

Stack Overflow用户
提问于 2012-11-29 17:26:44
回答 2查看 1.9K关注 0票数 1

尝试在Facebook上执行页面搜索

代码语言:javascript
复制
    if (sq.ObjectType.Equals("page"))
    {
        searchPath = "/search";

        req.q = sq.Query;
        req.type = sq.ObjectType;

    }

    dynamic results = FBClient_.Get(req);

我不知道如何解析结果。我不能简单地遍历它们。

我也看不到它的结构,因为它是动态对象,它有这样的结构:

代码语言:javascript
复制
{
   "data": [
      {
         "name": "Platform-3",
         "category": "Health/medical/pharmacy",
         "id": "362034114769"
      },
      {
         "name": "Platform Expos",
         "category": "Product/service",
         "id": "521000451259682"
      },
      {
         "name": "eXo Platform",
         "category": "Software",
         "id": "152603664817327"
      },
      {
         "name": "Platform 28",
         "category": "Bar",
         "id": "104411956289378"
      },
}

但我不确定如何得到它。如何将其转换为可读格式?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-30 11:34:58

下面是一些映射。

代码语言:javascript
复制
objects => IDictionary<string, object> or IDictionary<string, dynamic>
arrays => IList<object> or IList<dynamic>
number => long if whole number, double if have decimal values
string => string
boolean => bool

因此在您的情况下,您可以这样做。

代码语言:javascript
复制
dynamic result = fb.Get("...")
foreach(var data in result.data) {
    var name = data.name;
    var category = data.category;
    var id = data.id
}

因为result.data是动态的,实际上是IList<object>,所以你可以在它上面使用foreach。你也可以试试这个。

代码语言:javascript
复制
dynamic result = fb.Get("...")
IList<dynamic> data = result.data;
foreach(var d in data) {
    string name = d.name;
    string category = d.category;
    string id = d.id
}

或者是你的强类型。

代码语言:javascript
复制
public class SearchResults {
    public IList<SearchResult> data { get; set;}
}

public class SearchResult {
    public string id { get; set; }
    public string name { get; set; }
    public string category { get; set; }
}

var result = fb.Get<SearchResults>(...)

如果您想遵循C#命名标准,请使用DataContractDataMember

代码语言:javascript
复制
[DataContract]
public class SearchResults {
    [DataMember(Name = "data")]
    public IList<SearchResult> Data { get; set;}
}

[DataContract]
public class SearchResult {
    [DataMember(Name = "id")]
    public string Id { get; set; }

    [DataMember(Name = "Name")]
    public string Name { get; set; }

    [DataMember(Name = "Category")]
    public string Category { get; set; }
}
票数 1
EN

Stack Overflow用户

发布于 2012-11-30 11:39:19

您要么必须创建强类型的类来表示您的JSON数据,就像prabir发布的那样,要么您可以使用Json.NET这样的JSON库,它将允许您更容易地与您的数据交互。下面是他们页面上的一个例子:

代码语言:javascript
复制
string json = @"{
  ""Name"": ""Apple"",
  ""Expiry"": new Date(1230422400000),
  ""Price"": 3.99,
  ""Sizes"": [
    ""Small"",
    ""Medium"",
    ""Large""
  ]
}";

JObject o = JObject.Parse(json);

string name = (string)o["Name"];
// Apple

JArray sizes = (JArray)o["Sizes"];

string smallest = (string)sizes[0];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13622547

复制
相关文章

相似问题

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