c# - 特定 Json 的问题,无法转换
问题描述
有没有办法只获取 json 的一部分?,我需要(实体)然后将其发送到视图,我试图以不同的方式转换它但没有成功,请帮忙。
JSON - 我不需要状态码和消息,实体是真实数据
{"StatusCode":200,"Message":"succesfull list.","Entity":"[{\"Name\":\"name 1\",\"Enable\":1,\"Celphone\":null},{\"Name\":\"name 2\",\"Enable\":1,\"Celphone\":\"0\"}]"}
模型
public class Root
{
public int StatusCode { get; set; }
public string Message { get; set; }
public string Entity { get; set; }
}
控制器
var clientsEntity= JsonConvert.DeserializeObject<Root>(response);
return View(clientsEntity);
错误:
传递给字典的模型元素的类型为“APP.Models.Root”,但此字典需要“System.Collections.Generic.IEnumerable`1[APP.Models.EntityModel]”类型的模型元素。
我什至尝试创建一个额外的类
public class Entity
{
public string Name { get; set; }
public bool Enable { get; set; }
public string Celphone { get; set; }
}
var data = JsonConvert.DeserializeObject <IEnumerable<IDictionary<string, Object>>>(clientsEntity.Entity); //data has data needed
returnView(data);
错误:
传递给字典
1[System.Collections.Generic.IDictionary
的模型元素的类型为“System.Collections.Generic.List 2[System.String,System.Object]]”,但该字典需要类型为“System.Collections.Generic.IEnumerable`1”的模型元素[APP.Models.EntityModel]'。
我尝试了更多方法,但我陷入困境并且没有想法
解决方案
您的 JSON 是双重序列化的。要处理它,您首先需要将 JSON 反序列化为您的Root
类,然后将其Entity
属性反序列化为List<Entity>
.
var root = JsonConvert.DeserializeObject<Root>(json);
var entities = JsonConvert.DeserializeObject<List<Entity>>(root.Entity);
这是一个工作示例:https ://dotnetfiddle.net/jjbFNc
推荐阅读
- istio - Istio queryParams 总是返回真值
- delphi - BitmapListAnimation - 如何跳转到选定的帧
- javascript - 当我通过它的 ID 调用它时,为什么我没有得到它的内容?
- scala - Spark 中毫秒格式的正确时间戳
- c# - 如何从我的对象中的另一个对象访问虚拟属性
- android - 第一次从 Android Studio 在真实设备中执行应用程序时出错
- azure-active-directory - 如何在两个不同 Azure 租户上运行的两个云应用程序之间启用 SSO?
- haskell - 如何使用 Pipes 库编写 GroupBy 函数
- angular - 如何从 Angular 中的 javascript 触发路由导航?
- c# - 启动时出现不同的错误 - SSIS Visual Studio