繁体   English   中英

JSON到C#类 - 未知的属性名称

[英]JSON to C# Classes - Unknown property names

假设我有以下JSON有效负载;

  {
   "pagemap": {
    "metatags": [
     {
      "msapplication-task": "name\u003dAbout Tugberk Ugurlu;action-uri\u003d/about;icon-uri\u003d/content/App_Icons/icos/about.ico",
      "msapplication-task": "name\u003dContact;action-uri\u003d/contact;icon-uri\u003d/content/App_Icons/icos/contact.ico",
      "msapplication-task": "name\u003dBlog RSS Feed;action-uri\u003dhttp://feeds.feedburner.com/TugberkUgurlu;icon-uri\u003d/content/App_Icons/icos/rss.ico",
      "msapplication-task": "name\u003dTugberk on Twitter;action-uri\u003dhttp://twitter.com/tourismgeek;icon-uri\u003d/content/App_Icons/icos/twitter.ico",
      "msapplication-starturl": "./",
      "application-name": "Tugberk's Blog",
      "msapplication-tooltip": "bla bla bla..."
     }
    ]
   }
  }

元标记下的属性名称是动态的。 我的意思是其中一个是针对此请求的msapplication-starturl ,但对于另一个请求可能是msapplication-foo

那么这种JSON有效载荷的最佳c#类是什么?

编辑

这是谷歌搜索API提供的JSON格式的一部分。 我也在使用Json.NET。 除了动态还有其他方式吗?

我可能只是希望将MetaTags数组推入Dictionary<string,string>或甚至只是List<string> ,然后编写一个帮助程序类,将msapplication-task值解析为你想要的东西。

编辑:我相信OP正在寻找他的模型类实际如何的一些帮助

public class PageMap
{
    public Dictionary<string,string> MetaTags {get;set; }
}

通过查看该json对象,似乎RestSharp应该能够将其反序列化为此类。

调用代码类似于

var client = new RestClient("somegoogle.com");
var request = new RestRequest("Some/Foo/Bar", Method.GET)
                                 { RequestFormat = DataFormat.Json }; 
request.AddParameter("p1", "quigybo");
client.Execute<PageMan>(request)

您应该查看JSON.NE T和JObject以构建动态松散类型的对象。 如果您决定使用它,您应该NuGet下载它。

例:

var client = new WebClient();
client.Headers.Add("User-Agent", "your user agent here");
var response = client.DownloadString(new Uri("http://www.domain.com/source-page.html"));
JObject jo = JObject.Parse(response);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM