using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Metis.AutoAnalysis { public class AIResultReader { public string LoadGrainResult(string dir, ref List fileList) { string filename = dir + "\\report.ai"; if (File.Exists(filename) == false) return ""; using (System.IO.StreamReader _file = System.IO.File.OpenText(filename)) { using (JsonTextReader reader = new JsonTextReader(_file)) { try { JObject o = (JObject)JToken.ReadFrom(reader); JObject arrList = JObject.Parse(o["file_results"].ToString()); List gradeList = new List(); foreach (var item in arrList) { string name = item.Key.ToString(); string grade = item.Value.ToString(); if(gradeList.Contains(grade) == false) { gradeList.Add(grade); } } //获取每个级别的个数 List gradeCountList = new List(); for(int i = 0; i < gradeList.Count; i++) { gradeCountList.Add(0); } foreach (var item in arrList) { string grade = item.Value.ToString(); int pos = gradeList.IndexOf(grade); if (pos >= 0) { gradeCountList[pos]++; } } int maxPos = -1; int maxCount = -10000; for (int i = 0;i < gradeCountList.Count; i++) { int count = gradeCountList[i]; if (count > maxCount) { maxCount = count; maxPos = i; } } string resultGrade = gradeList[maxPos]; foreach (var item in arrList) { string name = item.Key.ToString(); string grade = item.Value.ToString(); if (grade == resultGrade) { fileList.Add(name); } } return resultGrade; } catch (Exception ex) { } } } return ""; } /// /// 查找最差级别 /// /// /// /// public string LoadOnlyResult(string dir) { string filename = dir + "\\report.ai"; if (File.Exists(filename) == false) return ""; using (System.IO.StreamReader _file = System.IO.File.OpenText(filename)) { using (JsonTextReader reader = new JsonTextReader(_file)) { try { JObject o = (JObject)JToken.ReadFrom(reader); JObject arrList = JObject.Parse(o["file_results"].ToString()); List gradeList = new List(); foreach (var item in arrList) { string name = item.Key.ToString(); double grade = (double)item.Value; if (gradeList.Contains(grade) == false) { gradeList.Add(grade); } } gradeList.Sort(); string resultGrade = gradeList.Last().ToString(); return resultGrade; } catch (Exception ex) { Console.WriteLine(ex); } } } return ""; } } }