web-dev-qa-db-ja.com

現在のJsonReaderアイテムはオブジェクトではありません

最初にアプリケーションを作成し、それからテストを開始しました(良い方法ではないことを知っています)、すべてが解析などで正常に動作しますが、テストをいくつか行った後にエラーが発生しました:

Newtonsoft.Json.JsonReaderException:JsonReaderからのJObjectの読み取りエラー。現在のJsonReaderアイテムはオブジェクトではありません:StartArray。パス ''、行1、位置1。

jObject = JObject.Parse(content);があり、arrayList = JArray.Parse(content);があります

internal JObject DoParse(string content)
{
    JObject jObject = new JObject();
    if (content != null)
    {
        if (content.Contains("Unable"))
        {
            MessageBox.Show("Not found.", "Error");
        }
        else
        {
            jObject = JObject.Parse(content);
        }
    }
    return jObject;
}

internal JArray DoParseOnList(string content)
{
    JArray arrayList = new JArray();
    if (content != null)
    {
        if (content.Contains("Unable"))
        {
            MessageBox.Show("Not found.", "Error");
        }
        else
        {

            arrayList = JArray.Parse(content);
        }
    }
    else { }
    return arrayList;
}

何が間違っているのですか?ところでstring contentは、サーバーから取得したjsonです。前もって感謝します !

JSON

Test Name:  SetGroup
Test Outcome:   Failed
Result Message: SetUp : Newtonsoft.Json.JsonReaderException : Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray. Path '', line 1, position 1.
Result StandardOutput:  [{"id":6208,"name":"test"},{"id":6315,"name":"jPOD v144 Testing"},{"id":6306,"name":"iButton Issue"},{"id":6424,"name":"Hybrid"}]
[{"id":6208,"name":"test"},{"id":6315,"name":"jPOD v144 Testing"},{"id":6306,"name":"iButton Issue"},{"id":6424,"name":"Hybrid"}]
[{"enabled":true,"scriptVersion":199,"configVersion":3,"name":"LMU3030 Hybrid Car Test based on 64.112 add ignition on-off"},{"enabled":true,"scriptVersion":199,"configVersion":2,"name":"LMU3030 Hybrid Car Test based on 50.106"},{"enabled":true,"scriptVersion":199,"configVersion":1,"name":"Hybrid car LMU 3030 Ignition test","description":""},{"enabled":true,"scriptVersion":64,"configVersion":113,"name":"based on 64.112 Engineering Build from calamp"},{"enabled":true,"scriptVersion":61,"configVersion":106},{"enabled":true,"scriptVersion":38,"configVersion":117},{"enabled":true,"scriptVersion":184,"configVersion":0},{"enabled":true,"scriptVersion":13,"configVersion":54},{"enabled":true,"scriptVersion":23,"configVersion":105,"name":"PULS Redirect to PROD","description":"Changes just Param 2320 to maint.vehicle-location.com"}]
[]
[{"message":"Not Implemented","vbusDeviceFiles":[],"vbusFileHistories":[]}]
7
yerpy

同様の問題があります。
返されるJSONは配列/リストですが、オブジェクトではありません。
代わりに、JArray.Parseを使用します。

jArray = JArray.Parse(content);
10
Peter C

よく似た問題に遭遇しました。私のJObject.Parse(json)が機能しないのは、Jsonの先頭に「[」と末尾の「]」があるためです。それを機能させるためには、これらの2つの文字を削除する必要がありました。私はあなたのJsonを調べて、それが{で始まり、}で終わることを確認します。

私にとっては、最初と最後の文字を削除しました。

jsonResult = jsonResult.TrimStart(new char[] { '[' }).TrimEnd(new char[] { ']' });
2
Stacy