web-dev-qa-db-ja.com

C#アイテムのJSON解析は配列ではありません

次のようなJSON文字列を解析しようとしています。

{
    "totalCreditsRemoved": 1,
    "invalidReceivers": [],
    "ids": [100070531],
    "validReceivers": ["+33635938286"]
}

これをWebAPIから取得し、文字列としてストックします。

var reader = new StreamReader(respStream);
String result = reader.ReadToEnd().Trim();
response = result;

応答はパブリック文字列です

次に、別の方法で:json文字列を解析しようとします。

var json = response;
var objects = JArray.Parse(json);

foreach (JObject root in objects)
{
    foreach (KeyValuePair<String, JToken> app in root)
    {
        totalCreditsRemoved = (String)app.Value["totalCreditsRemoved"];
        invalidReceivers = (String)app.Value["invalidReceivers"];
        ids = (String)app.Value["ids"];
        validReceivers = (String)app.Value["validReceivers"];
    }
}

しかし、私は常にこのエラーを受け取ります:

JsonReaderException:JsonReaderからのJArrayの読み取り中にエラーが発生しました。現在のJsonReaderアイテムは配列ではありません:StartObject。パス ''、行1、位置1。

エラーは次の行で発生します。

var objects = JArray.Parse(json);

これを修正する方法がわかりませんか? OVHjsonはすでにアレイではありません。よろしくお願いします。

4
Swurderer

JArray.Parseは配列ではないため、過剰な処理を行っているため、エラーが発生します。

var objects = JObject.Parse(json);

仕事をします

と抽出する

totalCreditsRemoved = (String)objects.Value["totalCreditsRemoved"];
invalidReceivers = (String)objects.Value["invalidReceivers"];
ids = (String)objects.Value["ids"];
validReceivers = (String)objects.Value["validReceivers"];
4
Rohit Behera
 dynamic jsonObj = JsonConvert.DeserializeObject(responseFromServer);
 foreach (var obj in obj1.Properties())
 {
     if (obj.Name == "rewardConfirmation") {
         foreach (var obj2 in obj.Value)
         {
             MessageBox.Show(obj2.ToString());
         }
     }
 }