2015-12-01 2 views
0
var stringResult = {"reporting":{"default":{"Outpatient":8045376.0,"OutpatientPMPM":101.6472,"totalWorkersCompClaimsPaid":7718428.46,"totalWorkersCompClaimsPaidPMPM":97.5165,"totalMedicalPaidAmount":1.6883294E7,"totalMedicalPaidAmountPMPM":213.3076,"totalVisionClaimsPaid":2837.69,"totalVisionClaimsPaidPMPM":0.0359,"totalPharmacyPaidAmount":2.478251486E7,"totalPharmacyPaidAmountPMPM":313.1082,"totalDentalClaimsPaid":12271.67,"totalDentalClaimsPaidPMPM":0.155,"employeeMonths":35415.0,"memberMonths":79150.0,"subscribers":3009.0,"totalVendorPaidAmount":97034.0,"totalVendorPaidAmountPMPM":1.226,"Office":4285314.0,"OfficePMPM":54.1417,"Inpatient":4552604.0,"InpatientPMPM":57.5187,"members":6741.0,"totalHealthPlanClaimsPaid":4.949638068000001E7,"averageFamilySize":2.2403,"totalHealthPlanClaimsPaidPMPM":625.3492}}} 

dynamic json = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(stringResult); 
float value = [email protected]; 

foreach (KeyValuePair<string, dynamic> page in [email protected]) 
{ 
    var key = page.Key; 
    var totalHealthPlanClaimsPaid = page.Value.totalHealthPlanClaimsPaid; 
    var averageFamilySize = page.Value.averageFamilySize; 
} 

я получаю ошибку в цикле Еогеасп, какНевозможно преобразовать тип 'Newtonsoft.Json.Linq.JProperty' в 'System.Collections.Generic.KeyValuePair <String, Object>'

Невозможно преобразовать type 'Newtonsoft.Json.Linq.JProperty' до 'System.Collections.Generic.KeyValuePair'.

при выполнении вышеуказанной задачи, где я делаю неправильно. .

+0

Это уже как-то говорит вам, в чем проблема. 'json.reporting. @ default' возвращает' JProperty', а не 'KeyValuePair'. Возможно, выполните свой код в отладчике и посмотрите на объект, возвращенный 'json.reporting. @ Default', чтобы вы получили представление об возвращенном объекте и данных и о том, как его использовать –

ответ

2

json.reporting @ возвращается по умолчанию Newtonsoft.Json.Linq.JProperty, изменить код:

foreach (KeyValuePair<string, dynamic> page in [email protected]()) 
{ 
    var key = page.Key; 
    var totalHealthPlanClaimsPaid = page.Value.totalHealthPlanClaimsPaid; 
    var averageFamilySize = page.Value.averageFamilySize; 
} 

Документах для чтения об этом http://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_Linq_JProperty.htm

2

Что @progpow сказал правильно. Вы также можете преобразовать результирующий набор в словарь и повторить его.

Dictionary<string, dynamic> result = [email protected]<Dictionary<string,dynamic>>(); 
foreach (KeyValuePair<string,dynamic> page in result) 
{ 
    var key = page.Key; 
    var totalHealthPlanClaimsPaid = page.Value.totalHealthPlanClaimsPaid; 
    var averageFamilySize = page.Value.averageFamilySize; 
}