首页 > 解决方案 > 特定 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]'。

我尝试了更多方法,但我陷入困境并且没有想法

标签: c#asp.net-mvcjson.net

解决方案


您的 JSON 是双重序列化的。要处理它,您首先需要将 JSON 反序列化为您的Root类,然后将其Entity属性反序列化为List<Entity>.

var root = JsonConvert.DeserializeObject<Root>(json);
var entities = JsonConvert.DeserializeObject<List<Entity>>(root.Entity);

这是一个工作示例:https ://dotnetfiddle.net/jjbFNc


推荐阅读