2014-01-13 119 views
0

我想从包含JSON值的URL获取数据。这些值将用于我的Windows 8桌面应用程序。我试过的代码见下面。从URL访问JSON值

HttpClient client = new HttpClient(); 
HttpResponseMessage response = await client.GetAsync(App.DataServiceUrl + "/productcategory"); 
var Groups = new List<GroupList>(); 

if (response.IsSuccessStatusCode) 
{ 
    var content = await response.Content.ReadAsStringAsync(); 
    var prods = JsonConvert.DeserializeObject<dynamic>(content); 
    foreach (var data in prods) 
    { 
     var dataGroup = new GroupList 
       (
       data.term_id, 
        data.name, 
       data.slug, 
        data.description, 
        data.taxonomy 
      ); 
     Groups.Add(dataGroup); 

    } 
} 

我访问URL实际上是一个网站,我调用一些类函数得到PHP中的一些数据,然后使用json_encode($all);返回JSON数据的页面。当我访问网址时,我可以看到所有的JSON数据。从URL中数据

一个例子是:

[{"term_id":"64","name":"Argentina","slug":"argentina","term_group":"0","term_taxonomy_id":"64","taxonomy":"product_cat","description":"","parent":"13","count":"20","meta_id":"154","woocommerce_term_id":"64","meta_key":"order","meta_value":"0","cat_ID":"64","category_count":"20","category_description":"","cat_name":"Argentina","category_nicename":"argentina","category_parent":"13"},...] 

但是,当我试图访问这些如term_id,姓名等(如图码以上)的应用程序无法识别的JSON值

相反,当我运行该应用程序我得到这个错误:

Unexpected character encountered while parsing value: <. Path", line 4, position 2

如何获取并使用从URL中值在我的C#代码?

+0

“网址我访问实际上是一个页面” - 这是否意味着GET执行URL返回text/html的,而不是JSON?请澄清。很显然,如果你试图将HTML解析为JSON,你会得到与“意外的字符'<”中提到的错误非常相似的错误。 –

+0

@AlexeiLevenkov这是该页面:http://cbbnideas.com/brydens-website/api/,它是一个WordPress网站页面,我只需通过json_encode回显数据。 – Tester

+0

不,你还在做其他事情(发布为需要格式化的答案)。 –

回答

0

您的页面在JSON前面生成一些随机文本。你可以采取任何HTTP调试器(我最喜欢的是提琴手,但任何事情都可以)来确认。下面是前几名从http://cbbnideas.com/brydens-website/api/响应的线 - 注意,JSON开始于8号线:

37 



<!--All Categories (And Sub Categories)--> 

6bd8 
[{"term_id":"64","name":"Argentina","slug":"argentina","term_gr... 
+0

谢谢。真的是这个愚蠢的错误。 – Tester

1

您可以使用DynamicJson类来解析JSON,据我所知这是最好的选择。