下のjsonで「バンドルファイル」データ(下の画像で赤い丸を付けています)を取得するにはどうすればよいですか?
私は試してみます:
string jsonText = await response.Content.ReadAsStringAsync();
JsonObject jsonObject = JsonObject.Parse(jsonText);
JsonArray jsonData1 = jsonObject["data"].GetArray();
foreach (JsonValue groupValue in jsonData1)
{
JsonObject groupObject = groupValue.GetObject();
string nid = groupObject["sku"].GetString();
string title = groupObject["judul"].GetString();
string deskripsi = groupObject["deskripsi"].GetString();
string tanggal = groupObject["tgl"].GetString();
string tipe = groupObject["tipe"].GetString();
string namaTipe = groupObject["nama_tipe"].GetString();
string gratis = groupObject["gratis"].GetString();
string dataFile = groupObject["nfile"].GetString();
string harga = groupObject["hrg"].GetString();
JsonArray bundle = groupObject["bundle"].GetArray();
foreach(JsonValue groupValue1 in bundle)
{
JsonObject groupObject1 = groupValue1.GetObject();
string bundleName = groupObject1["bundle_file"].GetString();
string pathFile = groupObject1["path_file"].GetString();
}
}
ただし、コードではJsonArray bundle = groupObject["bundle"].GetArray();
、次のようなエラーメッセージを表示します。
一方、「bundle_file」タイプは配列です。
これを解決する方法は?
これは配列値ではありません。ValueTypeプロパティを使用してタイプを取得します。
エラーメッセージから、これがタイプエラーであることがわかります。Jsonファイルをダウンロードしたところ、問題はデータにあることがわかりました。このJsonファイルのいくつかの「バンドル」は文字列型です。
だからあなたが呼び出すときgroupObject["bundle"].GetArray()
。それはうまくいかなかった。
この問題を修正するには、コードの一部を次のようなifステートメントでラップします。
var bundleObj = groupObject["bundle"];
if (bundleObj.ValueType == JsonValueType.Array)
{
JsonArray bundle = bundleObj.GetArray();
foreach (JsonValue groupValue1 in bundle)
{
JsonObject groupObject1 = groupValue1.GetObject();
string bundleName = groupObject1["bundle_file"].GetString();
string pathFile = groupObject1["path_file"].GetString();
}
}
そして、エラーはなくなります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加