有人可以帮助我,我正在尝试返回一个类别列表,但是它会变为空。有谁知道为什么?
Controller WEB:
public ActionResult MontaEstruturaCategoria()
{
ViewBag.Estilo = "none";
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(ConfigurationManager.AppSettings["UrlAPI"]);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var id = Session["UserId"];
var url = "api/categoria/" + id;
HttpResponseMessage response = client.GetAsync(url).Result;
if (response.IsSuccessStatusCode)
{
var categoria = response.Content.ReadAsAsync<IEnumerable<Categoria>>().Result;
return PartialView("ListaCategoria", categoria);
}
else
{
string msg = response.IsSuccessStatusCode.ToString();
throw new Exception(msg);
}
}
但这一行正在回归:
var categoria = response.Content.ReadAsAsync&gt;()。结果;
[0] = [ControleFinanceiro.Models.Categoria]
[1] = null
[2] = null
[3] = null
[4] = null
[5] = null
[6] = null
[7] = null
[8] = null
[9] = null
[10] = null
JSON RETURN WEB API:
[{"$id":"1","intCategoriaId":2,"strCategoriaNome":"Receitas","intCategoriaPaiId":0,"intCategoriaOrdem":2,"intUsuarioId":1,"Usuario":{"$id":"2","intUsuarioId":1,"strUsuarioNome":"Jose Henrique Borges da Costa Filho","strUsuarioEmail":"jose.costa@unidax.com.br","strUsuarioSenha":"1","Categoria":[{"$ref":"1"},{"$id":"3","intCategoriaId":3,"strCategoriaNome":"Salario","intCategoriaPaiId":0,"intCategoriaOrdem":1,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"4","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"3"}]}},{"$id":"5","intCategoriaId":4,"strCategoriaNome":"UNIDAX","intCategoriaPaiId":0,"intCategoriaOrdem":3,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"6","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"4"}]}},{"$id":"7","intCategoriaId":8,"strCategoriaNome":"Freela","intCategoriaPaiId":4,"intCategoriaOrdem":1,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"8","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"8"}]}},{"$id":"9","intCategoriaId":9,"strCategoriaNome":"Vendas","intCategoriaPaiId":2,"intCategoriaOrdem":1,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"10","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"9"}]}},{"$id":"11","intCategoriaId":14,"strCategoriaNome":"Pessoal","intCategoriaPaiId":4,"intCategoriaOrdem":3,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"12","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"14"}]}},{"$id":"13","intCategoriaId":15,"strCategoriaNome":"Academia","intCategoriaPaiId":18,"intCategoriaOrdem":1,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"14","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"15"}]}},{"$id":"15","intCategoriaId":16,"strCategoriaNome":"SwissPark","intCategoriaPaiId":4,"intCategoriaOrdem":2,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"16","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"16"}]}},{"$id":"17","intCategoriaId":17,"strCategoriaNome":"Supermercado","intCategoriaPaiId":14,"intCategoriaOrdem":1,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"18","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"17"}]}},{"$id":"19","intCategoriaId":18,"strCategoriaNome":"Carro","intCategoriaPaiId":17,"intCategoriaOrdem":1,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"20","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"18"}]}},{"$id":"21","intCategoriaId":19,"strCategoriaNome":"Teste","intCategoriaPaiId":15,"intCategoriaOrdem":1,"intUsuarioId":1,"Usuario":{"$ref":"2"},"EntityKey":{"$id":"22","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"19"}]}}],"Contato":[{"$id":"23","intContatoId":6,"strContatoNome":"Danielle Ramos Tonhai","strContatoCelular":"(19) 98765-8790","strContatoFixo":"(19) 3245-7869","strContatoEmail":"danielle.ramos@undiax.com.br","strContatoEndereco":"Rua Santos","strContatoComplemento":"casa","strContatoBairro":"Jardim Londres","strContatoCidade":"Campinas","strUFId":"SP","strContatoCEP":"13098-098","intUsuarioId":1,"UF":{"$id":"24","strUFId":"SP","strUFNome":"São Paulo","Contato":[{"$ref":"23"}],"EntityKey":{"$id":"25","EntitySetName":"UF","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"strUFId","Type":"System.String","Value":"SP"}]}},"Usuario":{"$ref":"2"},"EntityKey":{"$id":"26","EntitySetName":"Contato","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intContatoId","Type":"System.Int32","Value":"6"}]}}],"EntityKey":{"$id":"27","EntitySetName":"Usuario","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intUsuarioId","Type":"System.Int32","Value":"1"}]}},"EntityKey":{"$id":"28","EntitySetName":"Categoria","EntityContainerName":"DatabaseContext","EntityKeyValues":[{"Key":"intCategoriaId","Type":"System.Int32","Value":"2"}]}},{"$ref":"3"},{"$ref":"5"},{"$ref":"7"},{"$ref":"9"},{"$ref":"11"},{"$ref":"13"},{"$ref":"15"},{"$ref":"17"},{"$ref":"19"},{"$ref":"21"}]
答案 0 :(得分:0)
在你发布的JSON中......它是一个包含一个元素的数组。如果您使用Newtonsoft反序列化对象,您最终可能会得到如下内容:
var client = new WebClient();
var firstElement = JArray.Parse(client.DownloadString(url))[0];
var categories = firstElement.Usuario.Categoria;
我认为这样可行。你必须向下钻取一下以获得类别列表。