2017-08-18 17 views
0

これは以下のレスポンスモデルがあり、毎日のリストを取得しようとしています。応答モデルと受信jsonの下。エージェントオブジェクトのリストを取得するコードスニペットを追加しましたが、エージェントオブジェクトのリストからデイリーリストを取得できませんでした。私はここで何が間違っているのか分かりませんし、本当に助けを使うことができます。ありがとうございました。このjsonの解析に問題があります

{ 
    "accountId": "", 
    "policiesInForce": [ 
    { 
     "daily": [ 
    { 
     "date": "Date", 
     "pifCount": "", 
     "noPopPifCount": "", 
     "popPifCount": "", 
     "cleanPopPifCount": "" 
    } 
    ] 
} 
], 
"pathsToPartnership": [ 
{ 
    "pathsToPartnershipInd": "bool", 
    "pathsToPartnershipLevel": "" 
} 
], 
"overrides": [ 
{ 
    "startDate": "date", 
    "endDate": "date", 
    "overrideTier": "", 
    "turnOffPlatinumFlag": "bool" 
} 
    ], 
"agents": [ 
    { 
    "agentCode": "", 
    "pathsToPartnership": [ 
    { 
     "pathsToPartnershipInd": "bool", 
     "pathsToPartnershipLevel": "" 
    } 
    ], 
    "policiesInForce": [ 
    { 
     "daily": [ 
     { 
      "date": "Date", 
      "pifCount": "", 
      "noPopPifCount": "", 
      "popPifCount": "", 
      "cleanPopPifCount": "" 
     } 
     ] 
    } 
    ], 
    "exceptions": [ 
    { 
     "platinumInd": "bool", 
     "newAgentTenureDate": "date", 
     "maAgentTenureDate": "date", 
     "residentStCd": "", 
     "clPremiumAmt": "" 
    } 
    ], 
    "overrides": [ 
    { 
     "startDate": "date", 
     "endDate": "date", 
     "overrideTier": "", 
     "turnOffPlatinumFlag": "bool" 
    } 
    ], 
    "commissionLevel": [ 
    { 
     "pifLevel": "", 
     "effectiveDate": "Date", 
     "endDate": "Date" 
    } 
    ] 
    } 
    ] 

}

public class PoliciesInForce 
{ 
    public List<Daily> Daily { get; set; } 
} 

public class Daily 
{ 
    public string Date { get; set; } 
    public int PifCnt { get; set; } 
    public int NoPopPifCnt { get; set; } 
    public int PopPifCnt { get; set; } 
    public int CleanPopPifCount { get; set; } 
} 

public class PoliciesInForce2 
{ 
    public List<Daily> Daily { get; set; } 
} 

public class CommissionLevels 
{ 
    public List<object> CommissionLevel { get; set; } 
} 

public class Exceptions 
{ 
    public string ExceptionId { get; set; } 
    public string PlatinumInd { get; set; } 
    public string NewAgentTenureDate { get; set; } 
    public string MAAgentTenureDate { get; set; } 
    public string ResidentStCd { get; set; } 
    public object CLPremiumAmt { get; set; } 
} 

public class PathToPartnership 
{ 
    public string LevelCode { get; set; } 
    public string LevelName { get; set; } 
    public string StartDate { get; set; } 
    public object EndDate { get; set; } 
} 

public class Agent 
{ 
    public string AgentCode { get; set; } 
    public PoliciesInForce2 PoliciesInForce { get; set; } 
    public CommissionLevels CommissionLevels { get; set; } 
    public Exceptions Exceptions { get; set; } 
    public PathToPartnership PathToPartnership { get; set; } 
} 

public class PathToPartnership2 
{ 
    public string LevelCode { get; set; } 
    public string LevelName { get; set; } 
    public string StartDate { get; set; } 
    public string EndDate { get; set; } 
} 

public class Account 
{ 
    public int AccountId { get; set; } 
    public string CommissionLevel { get; set; } 
    public PoliciesInForce PoliciesInForce { get; set; } 
    public List<Agent> Agents { get; set; } 
    public PathToPartnership2 PathToPartnership { get; set; } 
} 

public class RootObject 
{ 
    public Account Account { get; set; } 
} 

}

var agents = new List<Agent>(); 
       string response = message.Content.ReadAsStringAsync().Result; 
       var account = JsonConvert.DeserializeObject<RootObject>(response); 
       var list = new List<Daily>(); 

       foreach (Agent agent in account.Account.Agents) 
       { 
        agents.Add(agent); 
       } 

       for (int i = 0; i < agents.Count; i++) 
       { 
        list[i].Date = agents[i].PoliciesInForce.Daily[i].Date; 
        list[i].PifCnt = agents[i].PoliciesInForce.Daily[i].PifCnt; 
        list[i].NoPopPifCnt = agents[i].PoliciesInForce.Daily[i].NoPopPifCnt; 
        list[i].PopPifCnt = agents[i].PoliciesInForce.Daily[i].PopPifCnt; 
        list[i].CleanPopPifCount = agents[i].PoliciesInForce.Daily[i].CleanPopPifCount; 
       } 
+1

_butエージェントオブジェクトのリストから日次リストを取得することはできませんでした。どうして?それを試みるとどうなりますか?エラー?予期しない動作?あなたが直面している問題をより明確に説明する必要があります。 – Sach

+0

そのリストは入力されません。それを初期化してインデックスを割り当てようとしていますか? – Nkosi

+0

forループが2度目に繰り返されるときにnull参照例外が発生します。 –

答えて

1

これは、リストを作成します。

var list = new List<Daily>(); 

リストに項目がない場合、リストのインデックスに割り当てようとしています。あなたがlist[i]を言うとき、ある

for (int i = 0; i < agents.Count; i++) 
{ 
    list[i].Date = agents[i].PoliciesInForce.Daily[i].Date; 
    list[i].PifCnt = agents[i].PoliciesInForce.Daily[i].PifCnt; 
    list[i].NoPopPifCnt = agents[i].PoliciesInForce.Daily[i].NoPopPifCnt; 
    list[i].PopPifCnt = agents[i].PoliciesInForce.Daily[i].PopPifCnt; 
    list[i].CleanPopPifCount = agents[i].PoliciesInForce.Daily[i].CleanPopPifCount; 
} 

、それはlist[i]Dailyのインスタンスを持っていることを前提としています。

あなたがする必要があるのはAdd()です。

for (int i = 0; i < agents.Count; i++) 
{ 
    list.Add(new Daily 
    { 
     Date = agents[i].PoliciesInForce.Daily[i].Date, 
     PifCnt = agents[i].PoliciesInForce.Daily[i].PifCnt, 
     NoPopPifCnt = agents[i].PoliciesInForce.Daily[i].NoPopPifCnt, 
     PopPifCnt = agents[i].PoliciesInForce.Daily[i].PopPifCnt, 
     CleanPopPifCount = agents[i].PoliciesInForce.Daily[i].CleanPopPifCount 
    }); 
} 
+0

リストに正常に1回追加されますが、2回目の反復で失敗します。 –

+0

私はあなたが 'agents [i] .PoliciesInForce.Daily [i]'を使う方法だと思います。つまり、ループの2回目の反復を行います。その時点では、「i = 1」です。さて、あなたは 'agent [1] .PoliciesInForce.Daily'リストにあなたが持っていることをどのように保証しますか?あなたの 'account'変数にはどのデータがあるかによって異なります。したがって、そこに2つのオブジェクトがあることを保証するものではありません。 null参照例外です。 – Sach

+0

もし私が尋ねることができるのであれば、この文脈ではヌル参照例外に対するガードの正しい方法は何でしょうか。私はこれを試してみました: if(agents [i] .PoliciesInForce.Daily [i]!= null) –

関連する問題