2017-10-12 7 views
0

JSONレスポンスを逆シリアル化しようとしています。配列が空であるかどうかを検出する関数が必要です。値が返されないようにするには、空でなければ返します。C#JSON;

空のJSON配列は次のようになります。

{"metrics":[]} 

そして、それは以下のいずれかのように見えることができます空ではありません。

{"metrics":["flow"]} 

{"metrics":["energy"]} 

{"metrics":["flow","energy"]} 

は、どのように私はこれを検出することができますか?

NullValueHandlingでは、配列が空の場合はnullではないため、値はまったくないため、NullValueHandlingでは機能しません。

私はインデックスについてのエラーを取得していません。

配列をクラスとしてリストに戻しています。あなたはJSONをデシリアライズするためにNewtonsoft.Jsonを使用していると仮定すると、

+0

と同じようにアクセスすることができました。関連するコードを投稿できますか? – gunr2171

+2

毎回同じ方法でデシリアライズしてから、 'List'が空であるかどうかを確認してください。 – Jonesopolis

+0

NewtonSoftのJSONデシリアライザがこれをうまく処理できると思います。長さ0の配列が得られます。 –

答えて

3

class Data 
{ 
    public List<string> Metrics { get; set; } 
} 

var json = "{\"metrics\":[]}"; 
var obj = JsonConvert.DeserializeObject<Data>(json); 

obj.Metricsコレクションではなく、nullになります。

Plusは、それがあった場合でも、あなたはあなたがあなたのコードでエラーを得たと言う

var metrics = obj.Metrics ?? new List<string>();