【发布时间】:2018-04-17 20:17:00
【问题描述】:
我需要将SqlDataReader 序列化为 Json。
我在互联网上研究了一些例子,但是所有结果都是“文本”而不是带有线条的对象。
我做错了什么?
我的实现:
public JsonResult Teste()
{
using (SqlConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["Conexao"].ConnectionString))
{
db.Open();
using (SqlCommand comando = new SqlCommand("select * from USERS", db))
{
using (SqlDataReader reader = comando.ExecuteReader())
{
DataTable dataTable = new DataTable();
dataTable.Load(reader);
var resultado = JsonConvert.SerializeObject(dataTable);
return Json(resultado, JsonRequestBehavior.AllowGet);
}
}
}
}
我的结果:
"[{\"UsuarioID\":1,\"Email\":\"admin\",\"Nome\":\"SISTEMA\"},{\"UsuarioID\":2,\"Email\":\"marlon.tiedt@gmail.com\",\"Nome\":\"Marlon Tiedt\"},{\"UsuarioID\":3,\"Email\":\"marlon.tiedt@megasul.com.br\",\"Nome\":\"Marlon - Megasul\"}]"
期望的结果:
[{"UsuarioID":1,"Email":"admin","Nome":"SISTEMA"},{"UsuarioID":2,"Email":"marlon.tiedt@gmail.com","Nome":"Marlon Tiedt"},{"UsuarioID":3,"Email":"marlon.tiedt@megasul.com.br","Nome":"Marlon - Megasul"}]
【问题讨论】:
-
到底是什么问题,转义字符?这些只是在调试器中查看它的结果。什么是“有线条的物体”?
-
我的问题是结果不是对象而是文本。我的结果在 "" 字符之间。这样我就不能在 View 中使用它。 @Plutonix
-
我还有其他Json,它来自Linq,可以正确生成记录。示例:
{"rows":[{"UsuarioVisaoID":2,"Email":"admin","Nome":"SISTEMA","Status":"A","Fixo":"Não"},{"UsuarioVisaoID":5,"Email":"marlon.tiedt@gmail.com","Nome":"Marlon Tiedt","Status":"A","Fixo":"Não"}],"total":2} -
对,您正在对 JSON 进行双重序列化,如 JSON.NET Parser seems to be double serializing my objects 所示。所以,不要这样做,直接返回你的对象。
标签: c# .net json asp.net-mvc