我需要将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"}]
答案 0 :(得分:2)
您双重编码输出,只需将 dataTable 对象传递给新的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);
return Json(dataTable, JsonRequestBehavior.AllowGet);
}
}
}
}
答案 1 :(得分:0)
Json在内部序列化你传递给它的任何数据。在你的情况下,你传递序列化的字符串而不是实际数据,所以它在响应中添加斜杠。删除序列化并将对象直接传递给Json,你将获得正确的json响应
答案 2 :(得分:0)
priceTemplate: '<span class="price">Price - <%- data.formatted %></span>'