次のような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はすでにアレイではありません。よろしくお願いします。
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"];
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());
}
}
}