У меня есть проблема с выводом для запроса, подобного этому:
SELECT
Users.Id,
Users.FbId,
Users.Email,
Users.Nombre,
(SELECT * FROM AccessLevel WHERE AccessLevel.Id = Users.NivelAcceso FOR JSON PATH) AS NivelAcceso,
(SELECT * FROM UserStatus WHERE UserStatus.Id = Users.Estatus FOR JSON PATH) AS Estatus
FROM
Users
WHERE
Users.Id = 1
FOR JSON AUTO, WITHOUT_ARRAY_WRAPPER;
В результате это выглядит так:
{
"Id": 1,
"Email": "some@email.com",
"NivelAcceso": [
{
"Id": 1,
"Clave": "Usuario"
}
],
"Estatus": [
{
"Id": 1,
"Estatus": "Activo"
}
]
}
Проблема заключается в том, когда я десериализую это вC # с Newtonsoft, квадратные скобки в «NivelAcceso» и «Estatus» не могут быть проанализированы, потому что Newtonsoft думает, что это массив.
Мои классы C # таковы:
public class AccessLevel
{
[JsonProperty(PropertyName = "Id")]
public int Id { get; set; }
[JsonProperty(PropertyName = "Clave")]
public string Clave { get; set; }
[JsonProperty(PropertyName = "Descripcion")]
public string Descripcion { get; set; }
}
public class UserStatus
{
[JsonProperty(PropertyName = "Id")]
public int Id { get; set; }
[JsonProperty(PropertyName = "Estatus")]
public string Estatus { get; set; }
[JsonProperty(PropertyName = "Descripcion")]
public string Descripcion { get; set; }
}
public class Users
{
public long Id { get; set; }
public string Email { get; set; }
[JsonProperty(PropertyName = "NivelAcceso")]
public AccessLevel NivelAcceso { get; set; }
[JsonProperty(PropertyName = "Estatus")]
public UserStatus Estatus { get; set; }
}
На самом деле яЯ использую что-то вроде этого:
Users data = JsonConvert.DeserializeObject<Users>(_dataReader[0].ToString().Replace('[', '\0').Replace(']', '\0'));
Кто-нибудь может мне помочь, как десериализовать это?