{
"$id": "1",
"return_code": "SUCCESS",
"message": "",
"resdata": {
"$id": "2",
"$values": [
{
"$id": "3",
"menuOid": "be066af2-0de9-ea11-a76b-00155de5aa1f",
"name": "点菜谱1",
"effect": true
}
]
}
}
如上面的数据,多出来了一层结构,"$id" 和 "$values" ,如何去除这层结构恢复原始的json对象结果呢?
忘记说了,是asp.net core 的项目
您好,System.Text.Json
正常序列化的话是不会有$id
,$value
的,你肯定是设置了ReferenceHandler = ReferenceHandler.Preserve
来处理循环引用了,这是设计使然并且不建议修改,可能会导致出错反而变得更复杂,你可以看下微软的官方文档:
比较简单的方法是你可以沿用Newtonsoft.Json,它在处理循环引用的时候没有更改json的格式,具体如何沿用你可以参考下面的官方文档:
如果你要获取json中的值,你可以这样做:
public IActionResult Index()
{
JsonSerializerOptions options = new()
{
ReferenceHandler = ReferenceHandler.Preserve,
WriteIndented = true
};
//将json反序列化成对应的model...
var data= JsonSerializer.Deserialize<List<YourModel>>(YourJsonString,options);
return View(data);
}
Index.cshtml:
将后台的model传递到前台:
@model List<YourModel>
@foreach(var item in Model)
{
@item.propertyName
}
换种序列化方式吧,本来及时原始数据是什么,序列化后的数据就是什么,少或多的都是不对的,如有帮助望采纳,谢谢