cas*_*out 3 c# windows arrays json windows-runtime
我正在为Windows 8开发一个新闻应用程序(在C#,XAML中).不幸的是,我在异步下载JSON-Feed(通过http://jsonlint.com/验证)后遇到了一个奇怪的错误.下载成功,然后我想解析结果:var items = Windows.Data.JsonArray.Parse(result);.
当我运行代码时,我收到以下错误:
Invalid character at position 0. 和 Invalid JSON string.
Json.JsonArray是Microsoft的新图书馆.我也尝试过具有相同错误的Newtonsoft的JSON库.我究竟做错了什么?
这是完整的代码:
// Retrieve recipe data from Azure
var client = new HttpClient();
client.MaxResponseContentBufferSize = 1024*1024; // Read up to 1 MB of data
var response = await client.GetAsync(new Uri("http://contosorecipes8.blob.core.windows.net/AzureRecipes"));
var result = await response.Content.ReadAsStringAsync();
// Parse the JSON recipe data
var recipes = JsonArray.Parse(result.Substring(1, result.Length - 1));
Run Code Online (Sandbox Code Playgroud)
此代码段来自Microsoft动手实验室(Contoso CookBook).我也尝试过没有源中的"["和"]"(没有效果)......
谢谢!
我能够使用以下方法下载并解析结果:
static async Task<JsonValue> DownloadJsonAsync(string url)
{
var client = new HttpClient();
client.MaxResponseContentBufferSize = 1024 * 1024;
var data = await client.GetByteArrayAsync(new Uri(url));
var encoding = Encoding.UTF8;
var preamble = encoding.GetPreamble();
var content = encoding.GetString(data, preamble.Length, data.Length - preamble.Length);
var result = JsonValue.Parse(content);
return result;
}
Run Code Online (Sandbox Code Playgroud)
显然没有正确处理响应中的BOM,这导致在'\xfeff'开始时杀死解析器的角色.剥离序言和解析读取正常.否则,将其解析为抛出一条FormatException消息:Encountered unexpected character 'ï'..
| 归档时间: |
|
| 查看次数: |
3512 次 |
| 最近记录: |