3

我正在开发适用于 Windows 8 的应用程序。我正在尝试通过 JSON 对 Twitter 进行搜索。为了实现这一点,我使用以下博客文章作为参考。http://blogs.microsoft.co.il/blogs/bursteg/archive/2008/11/26/twitter-api-from-c-searching.aspx

我的问题是,WinRT 框架中似乎不存在 ASCIIEncoding 类 :(。我看到 UTF8 可用,但是,我不确定如何直接使用 UTF8 类。有人可以告诉我怎么做吗?

谢谢,

4

3 回答 3

5

为了在 .NET(完整的 .NET 和 WinRT)中反序列化 JSON,我总是推荐JSON.NET。它比 DataContractJsonSerializer 或任何其他开箱即用的解决方案要容易得多。正如您在下面的代码中看到的那样,您不需要像在您提供的示例中那样定义编码。

您只需要一个对象模型(使用 json2csharp 生成它)和几行代码:

HttpResponseMessage response = await HttpClient.GetAsync(someUri);
if (response.StatusCode == HttpStatusCode.OK)
{
    string responseString = await response.Content.ReadAsStringAsync();
    // parse to json
    resultItem = JsonConvert.DeserializeObject<T>(responseString);
}

不久前,我写了一篇更广泛的文章,展示了在 WinRT中解析 JSON 的不同可能性。

于 2012-09-06T14:31:55.663 回答
2

您可以尝试使用 Windows.Data.Json 命名空间来反序列化(http://msdn.microsoft.com/en-us/library/windows/apps/windows.data.json(v=VS.85).aspx)。要获取您的 json,您可以使用以下内容:

HttpResponseMessage response = await client.GetAsync(url);
string responseText = await response.Content.ReadAsStringAsync();
于 2012-06-11T13:08:33.510 回答
1

只需替换ASCIIEncoding.UTF8Encoding.UTF8- 它们本质上是同一个对象(静态UTF8属性Encoding在桌面框架的基类中定义)。这在 W8 Metro 应用程序中可用。

于 2012-06-11T13:30:08.360 回答