【发布时间】:2017-02-07 12:31:07
【问题描述】:
我正在使用 OutBrain Api 。
在我的代码中,函数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,
});
}
}
我想得到一些帮助,谢谢!
【问题讨论】:
-
你得到什么错误?
-
我只是无法访问 json 对象中的数据。 foreach 循环没有在 Dictionary 中添加任何内容。
-
为什么不反序列化成一个对象呢?有什么具体原因吗?
-
好的,我可以试试,但它对我有什么帮助?
-
在 foreach 中反序列化后,您可以从列表中访问它,尝试它有帮助的智能感知
标签: c# json asp.net-mvc api json.net