/*------------------------------------------------------------------------- * 功能描述:BimJsonUtil * 作者:xulisong * 创建时间: 2019/6/18 11:23:16 * 版本号:v1.0 * -------------------------------------------------------------------------*/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using JBIM; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; namespace RevitToJBim.JsonConverter { public static class BimJsonUtil { public static string Serializer(BimDocument document) { JsonSerializerSettings jsetting = CreateDefaultSettings(); var bimObjects = document.BimObjects; var group = bimObjects.GroupBy(bim => bim.ElementType); Dictionary> dic = new Dictionary>(); foreach (var collection in group) { dic[collection.Key + "s"] = collection.ToList(); } var documentObject = new {MBIName = "PjXXX_001", PlanName = "F1-saga", Elements = dic}; //var serializer = JsonSerializer.Create(jsetting); //var jobject=JObject.FromObject(dic, serializer); //jobject.ToString(); string dataStr =JsonConvert.SerializeObject(documentObject, jsetting); return dataStr; } private static JsonSerializerSettings CreateDefaultSettings() { JsonSerializerSettings jsetting = new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore }; jsetting.Converters.Add(new BimIdConverter()); //mxg 显示x:,y:,z:格式的 //jsetting.Converters.Add(new XYZConverter()); jsetting.Converters.Add(new StringEnumConverter()); jsetting.Converters.Add(new ParameterConverter()); return jsetting; } private static DocumentDto ConverToDto(BimDocument document) { DocumentDto dto = new DocumentDto(); var bimObjects = document.BimObjects; var group = bimObjects.GroupBy(bim => bim.ElementType); Dictionary> dic = new Dictionary>(); foreach (var collection in group) { dic[collection.Key + "s"] = collection.ToList(); } dto.MBIName = "PjXXX_001";//待读取 dto.PlanName = "F1-saga"; dto.Elements = dic; return dto; } } /// /// 项目传输数据结构 /// public class DocumentDto { public string MBIName { get; set; } public string PlanName { get; set; } public Dictionary> Elements { get; set; } } }