1

Trying to execute search on Facebook for pages

    if (sq.ObjectType.Equals("page"))
    {
        searchPath = "/search";

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

    }

    dynamic results = FBClient_.Get(req);

And I can't figure out how to parse results. I cant just simple loop through them.

and I can't see the structure either since it's dynamic object Somewhere down the line it has this structure:

{
   "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"
      },
}

but how to get it I'm not sure. How do I convert it into readable format?

4

2 に答える 2

1

ここにいくつかのマッピングがあります。

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

したがって、あなたの場合、これを行うことができます。

dynamic result = fb.Get("...")
foreach(var data in result.data) {
    var name = data.name;
    var category = data.category;
    var id = data.id
}

result.data動的であるため、実際にはforeachIList<object>を使用できます。これも試すことができます。

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
}

または、強く入力しました。

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ます。

[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; }
}
于 2012-11-30T03:34:57.963 に答える
0

prabir が投稿したように、JSON データを表すために厳密に型指定されたクラスを作成するか、Json.NETなどの JSON ライブラリを使用して、データをより簡単に操作できるようにする必要があります。彼らのページの例を次に示します。

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];
于 2012-11-30T03:39:18.637 に答える