Я работаю с OutBrain Api.Вложенный массив в JObject
В моем коде, функция response.Content.ReadAsStringAsync();
возвращает объект JSON, который выглядит следующим образом:
{
"results": [
{
"metadata": {
"id": "2016-10",
"fromDate": "2016-10-01",
"toDate": "2016-10-30"
},
"metrics": {
"impressions": 1164823829,
"clicks": 2660235,
"conversions": 2228,
"spend": 463546.37,
"ecpc": 0.17,
"ctr": 0.23,
"conversionRate": 0.08,
"cpa": 208.05
}
},
{
"metadata": {
"id": "2016-09",
"fromDate": "2016-09-01",
"toDate": "2016-09-30"
},
"metrics": {
"impressions": 959483548,
"clicks": 2245759,
"conversions": 1777,
"spend": 385899.67,
"ecpc": 0.17,
"ctr": 0.23,
"conversionRate": 0.08,
"cpa": 217.16
}
},
{
"metadata": {
"id": "2016-08",
"fromDate": "2016-08-01",
"toDate": "2016-08-31"
},
"metrics": {
"impressions": 980319229,
"clicks": 2621017,
"conversions": 1818,
"spend": 358970.61,
"ecpc": 0.14,
"ctr": 0.27,
"conversionRate": 0.07,
"cpa": 197.45
}
}
],
"totalResults": 3,
"summary": {
"impressions": 3104626606,
"clicks": 7527011,
"conversions": 5823,
"spend": 1208416.65,
"ecpc": 0.16,
"ctr": 0.24,
"conversionRate": 0.08,
"cpa": 207.52
}
}
Я пытаюсь достигнуть данных внутри каждого «метаданных» и «метрики», которые все в " результаты ", но кажется, что мой код не работает.
Мой код:
string responseData = await response.Content.ReadAsStringAsync();
JObject campaignData = JsonConvert.DeserializeObject<dynamic>(responseData);
Dictionary<string, dynamic> mediaCampaigns = new Dictionary<string, dynamic>();
if (campaignData != null)
{
if (campaignData["totalResults"].ToString() != "1" & campaignData["totalResults"].ToString() != "0")
{
foreach (var campItem in campaignData)
{
mediaCampaigns.Add(campItem["@results"]["@metadata"]["@fromDate"]ToString(), new
{
cost = campaignData["@results"]["@metrics"]["@spend"] != null ? campaignData["@results"]["@metrics"]["@spend"] : 0,
clicks = campaignData["@results"]["@metrics"]["@clicks"] != null ? campaignData["@results"]["@metrics"]["@clicks"] : 0,
impressions = campaignData["@results"]["@metrics"]["@impressions"] != null ? campaignData["@results"]["@impressions"]["@impressions"] : 0,
conversions = campaignData["@results"]["@metrics"]["@conversions"] != null ? campaignData["@results"]["@metrics"]["@conversions"] : 0,
});
}
}
else
{
mediaCampaigns.Add(campaignData["@results"]["@metadata"]["@fromDate"].ToString(), new
{
cost = campaignData["@results"]["@metrics"]["@spend"] != null ? campaignData["@results"]["@metrics"]["@spend"] : 0,
clicks = campaignData["@results"]["@metrics"]["@clicks"] != null ? campaignData["@results"]["@metrics"]["@clicks"] : 0,
impressions = campaignData["@results"]["@metrics"]["@impressions"] != null ? campaignData["@results"]["@impressions"]["@impressions"] : 0,
conversions = campaignData["@results"]["@metrics"]["@conversions"] != null ? campaignData["@results"]["@metrics"]["@conversions"] : 0,
});
}
}
Я хотел бы получить некоторую помощь, спасибо!
Что ошибка вы получаете? – Mahdi
Я просто не могу получить доступ к данным внутри объекта json. петля foreach ничего не помещает в словарь. – Tal
Почему бы вам не десериализовать его в объект? Есть ли какая-то конкретная причина? – Mahdi