主页>技术社区>编程问答

从现有的Json流中删除$ type和Id属性?

eIT.com.cn 2023/3/17 11:23:38 阅读 3 次

打印


如何解决从现有的Json流中删除$ type和Id属性??

我正在使用以下序列化复杂的对象:

var customerResultJson = JsonConvert.SerializeObject(customerResult,CustomerSettings.GetDefaultSettings());

因此,customerResultJson正在$type$id。我无法控制CustomerSettings.GetDefaultSettings,因为它来自其他项目dll。我想那些类型。我该如何实现?已尝试以下,但是newCustomerResultJson嵌套对象仍然保留类型和ID。

var customerDeserializeObject = JsonConvert.DeserializeObject(customerResultJson,new JsonSerializerSettings()   {TypeNameHandling = TypeNameHandling.None,Formatting = Formatting.Indented});

var newCustomerResultJson= JsonConvert.SerializeObject(customerDeserializeObject,Formatting = Formatting.Indented});

样本customerResultJson:

{  "$id": "1","$type": "Customer.CustomerAddress,Customer.CustomerAddress.Common,Version=8.0.0.0,Culture=neutral,PublicKeyToken=f291d57f641e84e4","FlatRate": 29.65,"AmountFinanced": 12402.2,"AmountUsed": 12302.2,"TotalPayment": 0,"CustomerAddress": {     "$id": "2","$type": "Sy.Collections.Generic.Dictionary`2[[Sy.String,mscorlib,Version=4.0.0.0,PublicKeyToken=b77a5c561934e089],[Sy.Collections.Generic.List`1[[Customer.Customerbject,Drive.Framework,PublicKeyToken=f291d57f641e84e4]],PublicKeyToken=b77a5c561934e089]],PublicKeyToken=b77a5c561934e089","Items": {        "$id": "3","$type": "Sy.Collections.Generic.List`1[[Customer.Customerbject,Customer.Framework,"$values": []     },"Added": {        "$id": "4","Removed": {        "$id": "5","$values": []     }  }  }

解决方法

这就是我实现目标的方式:在此处发布信息可能会对某人有所帮助。

 JObject respJObject = JObject.Parse(JsonResult); respJObject.Descendants().OfType<JProperty>().Where(attr => attr.Name.StartsWith("$type")).ToList().ForEach(attr => attr.Remove());

以上行也从嵌套属性中删除了类型。






相关内容


热门栏目


特别声明


最新资讯
热讯排行



合作媒体友情链接
生活常识小贴士 软件开发教程 智慧城市生活网 息县通生活服务[移动版] 息县商圈[移动版] 美食菜谱
健康养生 法律知识 科技频道 电影影讯 留学考研学习 星座生肖|解梦说梦




关于我们 | 联系我们 | 合作媒体 | 使用条款 | 隐私权声明 | 版权声明

      Copyright © 2023 eIT.com.cn. All Rights Reserved. 豫ICP备2022012332号