【发布时间】:2016-03-28 11:27:52
【问题描述】:
我有如下 json 文件:
[
{"TYPE": "A", "STATUS": "SUCCESS", "DISCOUNT": 500.00, "TOTAL": 5000.00},
{"TYPE": "A", "STATUS": "SUCCESS", "DISCOUNT": 300.00, "TOTAL": 1266.00},
{"TYPE": "A", "STATUS": "FAIL", "DISCOUNT": 300.00, "TOTAL": 515.00},
{"TYPE": "B", "STATUS": "SUCCESS", "DISCOUNT": 323, "TOTAL": 846.00},
{"TYPE": "B", "STATUS": "FAIL", "DISCOUNT": 80.00, "TOTAL": 3000.00},
{"TYPE": "B", "STATUS": "KIV", "DISCOUNT": 105, "TOTAL": 900.00},
{"TYPE": "C", "STATUS": "KIV", "DISCOUNT": 245.00, "TOTAL": 998.75},
{"TYPE": "B", "STATUS": "SUCCESS", "DISCOUNT": 234.00, "TOTAL": 3500.00},
{"TYPE": "C", "STATUS": "SUCCESS", "DISCOUNT": 201, "TOTAL": 5008.00},
{"TYPE": "C", "STATUS": "FAIL", "DISCOUNT": 712, "TOTAL": 12300.00},
{"TYPE": "A", "STATUS": "SUCCESS", "DISCOUNT": 500.00, "TOTAL": 5000.00},
{"TYPE": "D", "STATUS": "SUCCESS", "DISCOUNT": 300.00, "TOTAL": 1266.00},
{"TYPE": "D", "STATUS": "FAIL", "DISCOUNT": 300.00, "TOTAL": 515.00},
{"TYPE": "D", "STATUS": "SUCCESS", "DISCOUNT": 323, "TOTAL": 846.00},
{"TYPE": "B", "STATUS": "FAIL", "DISCOUNT": 80.00, "TOTAL": 3000.00},
{"TYPE": "B", "STATUS": "KIV", "DISCOUNT": 105, "TOTAL": 900.00},
{"TYPE": "C", "STATUS": "KIV", "DISCOUNT": 245.00, "TOTAL": 998.75},
{"TYPE": "B", "STATUS": "SUCCESS", "DISCOUNT": 234.00, "TOTAL": 3500.00},
{"TYPE": "C", "STATUS": "KIV", "DISCOUNT": 201, "TOTAL": 5008.00},
{"TYPE": "C", "STATUS": "SUCCESS", "DISCOUNT": 712, "TOTAL": 12300.00}
]
制作方法:
- 状态数组
- 总计数组(每个状态的总计)
- 每个状态的数组编号
示例(预期结果):
1) 状态 [“成功”、“失败”、“KIV”]
2) 总计 [199000.00, 12000.00, 6000.00]
3) 每种类型的每种状态的数量如:
[{A:[{SUCCESS: 2},
{FAIL: 1}]
},
{B:[{SUCCESS:2},
{FAIL:1},
{KIV:1}]
}]
我已经尝试过我自己的方式和它的作品(除了没有 3),但我想知道它是否可以是另一种更简单的方式。 下面是我的步骤:
var arrStatus=[];
var countStatus=[];
var flagStatus="";
var arrTotal=[];
for (var i = 0; i < data.length; i++) {
var tempStatus = data[i].STATUS;
flagStatus= false;
for(var z = 0; z< arrStatus.length; z++){
if(tempStatus == arrStatus[z]){
arrTotal[z] += data[i].TOTAL;
countStatus[z]++;
flagStatus = true;
}
}
if(flagStatus == false){
countStatus.push(1);
arrStatus.push(tempStatus);
arrTotal.push(data[i].TOTAL);
}
}
感谢您的帮助
【问题讨论】:
-
假设这是 c#,您可以利用 Newtonsoft.Json 库将 JSON 字符串解析为强类型 JObject。通过该对象,您可以操作数据以生成您希望的新 JObject。
标签: json