如果您更换
// This takes the current bitcoin price and formats it so there is the correct amount of decimal placesstring story = (string)ja['response']['results']['fields']['body'];
与
// This takes the current bitcoin price and formats it so there is the correct amount of decimal placesstring story = (string)ja['response']['results'][0]['fields']['body'];
应该适合您的示例。请注意,在您提供的示例中,结果后面的方括号表示要在访问代码中说明的数组。
解决方法我正在使用监护人API尝试检索故事,但一直收到异常。json的字符串包含以下json,但是我无法使用LINQ访问主体。
这里是:
{ 'response':{ 'status':'ok','userTier':'approved','total':1,'startIndex':1,'pageSize':10,'currentPage':1,'pages':1,'orderBy':'newest','results':[{ 'id':'sustainable-business/sustainable-finance-where-next-open-thread','sectionId':'sustainable-business','sectionName':'Guardian Sustainable Business','webPublicationDate':'2014-02-13T13:27:00Z','webTitle':'Where next for sustainable finance? - open thread','webUrl':'http://www.theguardian.com/sustainable-business/sustainable-finance-where-next-open-thread','apiUrl':'http://content.guardianapis.com/sustainable-business/sustainable-finance-where-next-open-thread','fields':{'body':'<img src='http://hits.theguardian.com/b/ss/guardiangu-api/1/H.20.3/98867?ns=guardian&pageName=Where+next+for+sustainable+finance%3F+-+open+thread+Article+2043222&ch=Guardian+Sustainable+Business&c2=461773&c4=MIC%3A+Finance+%28GSB%29%2CMIC%3A+Guardian+Sustainable+Business%2CPRO%3A+Sustainability+%28Guardian+Professional%29&c3=theguardian.com&c6=Laura+Paddison&c7=14-Feb-13&c8=2043222&c9=Article' />...' } }] }}
我已经尝试了一切,包括:
string story = (string)ja['response']['results']['fields']['body'];
更新:
public partial class Story : PhoneApplicationPage{ string url; string jsonData; // Http used so the json can be retrived via the get async methods HttpClient webClient = new HttpClient(); protected override void OnNavigatedTo(NavigationEventArgs e) {if (NavigationContext.QueryString.ContainsKey('key')){ string encodedValue = NavigationContext.QueryString['key']; url = Uri.UnescapeDataString(encodedValue); textBox.Text = url; guardianPanorama();} } private async void guardianPanorama() {try{ HttpResponseMessage Result = await webClient.GetAsync(url); // This takes the http response content and is turned into a string jsonData = await Result.Content.ReadAsStringAsync(); JObject ja = JObject.Parse(jsonData); // This takes the current bitcoin price and formats it so there is the correct amount of decimal places string story = (string)ja['response']['results']['fields']['body']; // It then gets added to the textbox textBox.Text = story;}catch (Exception errors){ MessageBox.Show('There has been a error with the Guardian API'); Console.WriteLine('An error occured:' + errors);} }}
例外:
System.ArgumentException:使用无效键值“ fields”访问的JArray值。期望数组位置索引。
在Newtonsoft.Json.Linq.JArray.get_Item(Object key)