使用无效的键值“ fields”访问的JArray值预期的阵列位置索引

问题描述

如果您更换

// 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"];

// This takes the current bitcoin price and formats it so there is the correct amount of decimal places
string 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&amp;pageName=Where+next+for+sustainable+finance%3F+-+open+thread+Article+2043222&amp;ch=Guardian+Sustainable+Business&amp;c2=461773&amp;c4=MIC%3A+Finance+%28GSB%29%2CMIC%3A+Guardian+Sustainable+Business%2CPRO%3A+Sustainability+%28Guardian+Professional%29&amp;c3=theguardian.com&amp;c6=Laura+Paddison&amp;c7=14-Feb-13&amp;c8=2043222&amp;c9=Article\" width=\"1\" height=\"1\" />..."
      }
     }]
     }
}

我已经尝试了一切,包括:

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)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...