'System.Collections.Generic.KeyValuePair<string,object>' does not contain a definition for 'work'

女生的网名这么多〃 提交于 2019-12-11 17:29:38

问题


    namespace WebApplication1.Site
{
public partial class WebForm1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {


        var accessToken = "" // Token
        var client = new FacebookClient(accessToken);
        dynamic myInfo = client.Get("me/friends", new { fields = "name,id,work" });

        foreach (dynamic friend in myInfo)
        {
            foreach (dynamic work in friend.work ?? new[] { new { employer = new { name = string.Empty }, position = new { name = string.Empty } } })
                {
                    Response.Write("Employer: " + work.employer.name);
                }

        }


    }
}
}

I am getting the following error on line 21. I cannot figure out what is causing it.

'System.Collections.Generic.KeyValuePair' does not contain a definition for 'work'

Sample JSON Return from the Facebook GraphAPI. This is only the first three friends. There are closer to 4000 friends I am parsing, obviously this gives some context for the structure of the data:

    {
      "data": [
{
  "name": "Mia xxx", 
  "id": "11381", 
  "work": [
    {
      "employer": {
        "id": "100982923276720", 
        "name": "New-York Historical Society"
      }, 
      "location": {
        "id": "108424279189115", 
        "name": "New York, New York"
      }
    }
  ]
}, 
{
  "name": "Leilah xxx", 
  "id": "1133"
}, 
{
  "name": "xxx, 
  "id": "1231", 
  "work": [
    {
      "employer": {
        "id": "104362369673437", 
        "name": "Bye Bye Liver: The Philadelphia Drinking Play"
      }, 
      "location": {
        "id": "101881036520836", 
        "name": "Philadelphia, Pennsylvania"
      }, 
      "position": {
        "id": "121113421241569", 
        "name": "Actress/Bartender"
      }, 
      "description": "A sketch comedy/improv show every Saturday night at Downey's on South & Front. Come thirsty!", 
      "start_date": "2011-09"
    }, 
    {
      "employer": {
        "id": "100952634348", 
        "name": "Act II Playhouse"
      }, 
      "location": {
        "id": "109249869093538", 
        "name": "Ambler, Pennsylvania"
      }, 
      "position": {
        "id": "125578900846788", 
        "name": "My Fair Lady"
      }, 
      "description": "11 actor version of the classic musical.", 
      "start_date": "0000-00"
    }, 

回答1:


An alternative to relying on the dynamic is to capture and parse the JSON with JSON.net, it's designed for querying json data and is really much safer than using dynamic

http://json.codeplex.com/

And deserializing into classes:

http://dotnetbyexample.blogspot.ca/2012/02/json-deserialization-with-jsonnet-class.html




回答2:


Look at this:

Response.Write("Employer: " + myInfo.work.employer.name);

I suspect you meant:

Response.Write("Employer: " + work.employer.name);

Put it this way - if that's not what you meant, what's the purpose of your work variable?



来源:https://stackoverflow.com/questions/11802828/system-collections-generic-keyvaluepairstring-object-does-not-contain-a-defi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!