【发布时间】:2018-06-21 16:57:28
【问题描述】:
给定 JSON 格式的数据:
[
{
"section": "charges",
"lines": [
{
"cardtype": "MasterCard"
},
{
"sales": "$16.55"
},
{
"items": "10"
},
{
"cardtype": "Visa"
},
{
"sales": "$16.50"
},
{
"items": "39"
},
{
"cardtype": "Diners"
},
{
"sales": "40.00"
},
{
"items": "10"
}
]
}
]
我想以属性名称为中心并列出属性值——也许在 DataTable 中?
数据收集为Dictionary<string,object>()
我需要按卡片类型汇总销售额和商品计数。例如:
+---------------+-------+-------+
| cardtype | sales | items |
+---------------+-------+-------+
| Mastercard | 16.55 | 10 |
| Visa | 16.50 | 39 |
| Diners | 40.00 | 10 |
+---------------+-------+-------+
| Total | 73.05 | 59 | <- would be calculated after conversion.
+---------------+-------+-------+
我已经测试了SelectTokens() 方法,我可以提取行数组,但事实证明,旋转很困难,因为字段名称会根据数据来源的不同而有所不同。
有什么想法吗?
【问题讨论】:
-
代码试用
-
JObject jo = JObject.Parse(json); jo.SelectToken("lines[0]")将只返回第一条记录和值作为 JObject 和 JProperty 我试图迭代所有属性并将它们添加到新 IDictionary -
这里还有一些代码
var r = jo.SelectToken("lines"); foreach( JToken item in r ) { foreach(JProperty prop in item ) { Console.WriteLine(item[prop.Name]); } }
标签: c# json json.net pivot pivot-table