C# 无法使用';动态';使用Json.Net和通用应用程序

C# 无法使用';动态';使用Json.Net和通用应用程序,c#,json.net,win-universal-app,C#,Json.net,Win Universal App,我有以下代码 var client = new HttpClient(); var url = new Uri("https://someuri/someresource", UriKind.Absolute); var response = await client.GetAsync(url); var content = await response.Content.ReadAsStringAsync(); var json = JsonConvert.DeserializeObject(c

我有以下代码

var client = new HttpClient();
var url = new Uri("https://someuri/someresource", UriKind.Absolute);
var response = await client.GetAsync(url);
var content = await response.Content.ReadAsStringAsync();
var json = JsonConvert.DeserializeObject(content) as dynamic;
根据我调试代码时看到的情况,一切都成功完成了;i、 例如,上面返回预期的JSON,并且
JSON
对象具有预期的属性。。。让我们假设它是:

{ "current_page": 1, "total_pages": 7, "items": [ ... ] }
但是,当我执行
json.current_page
时,会出现以下异常:

“对象”不包含“当前页面”的定义,并且不包含 扩展方法“current_page”接受类型为的第一个参数 找不到“object”(是否缺少using指令或 装配参考?)

有人知道这里出了什么问题吗

另外,我在两种通用应用程序上都试过了,Windows 8.1和Windows Phone 8.1


另外,相同的代码适用于控制台应用程序,但不适用于通用应用程序。

您得到的对象上没有定义属性,您需要首先对其进行解析。您可以使用
System.Web.Helpers.Json
类,如下所示

dynamic data = Json.Decode(json);
dynamic d = JObject.Parse(@"{ ""current_page"": 1, ""total_pages"": 7}");
Console.WriteLine(d.current_page);
正如我看到的,您正在使用newtonsoft,因此您可以使用
Parse
实现相同的功能,如下所示

dynamic data = Json.Decode(json);
dynamic d = JObject.Parse(@"{ ""current_page"": 1, ""total_pages"": 7}");
Console.WriteLine(d.current_page);

您将获得一个没有定义属性的对象,需要首先对其进行解析。您可以使用
System.Web.Helpers.Json
类,如下所示

dynamic data = Json.Decode(json);
dynamic d = JObject.Parse(@"{ ""current_page"": 1, ""total_pages"": 7}");
Console.WriteLine(d.current_page);
正如我看到的,您正在使用newtonsoft,因此您可以使用
Parse
实现相同的功能,如下所示

dynamic data = Json.Decode(json);
dynamic d = JObject.Parse(@"{ ""current_page"": 1, ""total_pages"": 7}");
Console.WriteLine(d.current_page);

我最近也遇到了同样的问题,看到你开了一个网站

答案是:

UWP应用程序使用PCL259程序集,不支持动态。将来可能会添加一个专用程序集,但在接下来的两个版本中不会添加。 -JamesNK


我最近也遇到了同样的问题,看到你开了一个网站

答案是:

UWP应用程序使用PCL259程序集,不支持动态。将来可能会添加一个专用程序集,但在接下来的两个版本中不会添加。 -JamesNK


您是否尝试过更为惯用的
dynamic json=JsonConvert.DeserializeObject(content)?仅仅为了改变类型推断而使用
作为
是很奇怪的…是的,我也试过了。。。同样的问题。我使用
as
只是为了使用
var
:)您是否尝试了更为惯用的
动态json=JsonConvert.DeserializeObject(内容)?仅仅为了改变类型推断而使用
作为
是很奇怪的…是的,我也试过了。。。同样的问题。我使用
as
只是为了使用
var
:)我尝试了两种方法,
jsonvert.DeserializeObject
JObject.Parse
。我的问题是针对通用应用的。我在控制台应用程序中尝试了这段代码,一切都按预期进行。我修改了这个问题以澄清这一点。
Jobject.Parse
应该同样适用于任何平台,我将尝试通用应用程序,并让您知道我尝试了这两种应用程序,
jsonvert.DeserializeObject
Jobject.Parse
。我的问题是针对通用应用的。我在控制台应用程序中尝试了这段代码,一切都按预期进行。我修改了这个问题来澄清这一点。
Jobject.Parse
应该同样适用于任何平台,我将尝试使用通用应用程序并让您知道