Newtonsoft JSON の JToken を JArray に変換する最良の方法は何ですか? 質問する

Newtonsoft JSON の JToken を JArray に変換する最良の方法は何ですか? 質問する

JSON 内の配列が与えられた場合、それを JArray に変換する最適な方法を見つけようとしています。たとえば、以下の C# コードを検討してください。

var json = @"{
  ""cities"": [""London"", ""Paris"", ""New York""]
}";

このJSONをJObjectに読み込むと次のようになります。

var jsonObject = JObject.Parse(json);

ここで、「都市」フィールドを取得します。

var jsonCities = jsonObject["cities"];

ここで、jsonCities をタイプとして取得しますJTokenjsonCitiesは配列であることはわかっているので、 に変換したいと思いますJArray。現在私が行っている方法は次のとおりです。

var cities = JArray.FromObject(jsonCities);

JArray に変換するもっと良い方法はないか調べています。他の人はどのように使っているのでしょうか?

ベストアンサー1

受け入れられる答えは、コメントによるdbc

JArray へのキャストを提案した後、null 値をチェックすることで結果を検証できます。

var jsonCities = jsonObject["cities"] as JArray;
if (jsonCities == null) return;

...do your thing with JArray...

編集:

述べたようにdbcJArrayを表すJTokenは、すでにJArrayです。つまり、JToken.TypeがJTokenType.配列。そうであれば、表記法を使用してアクセスできますas JArrayasキャスト表記法を使用すると、キャストに失敗するnullと、説明されているように値がレンダリングされます。こここれにより、実際に使用できる JArray を取得したかどうかを検証するのに便利になります。

JArray.FromObject(x)は を取るのでobject、 として表現できるものであれば何でも使用できobject、したがって確実に JToken になります。

この場合、JToken から JArray に単純にキャストできることがわかっているので、別の可能性が生まれます。もっと速くなると期待しますが、これは他の誰かが考え出すための課題として残しておきます。

おすすめ記事