【发布时间】:2015-09-03 09:50:44
【问题描述】:
我已经阅读了无数的问题和答案,但还没有看到任何解决问题的方法。
我正在使用 newtonsoft JSON 库,只是想从表中返回一些 JSON。
所以在我的控制器中,我只是有(服务器和数据库详细信息为隐私而空白):
public IHttpActionResult GetHelloWorld()
{
string JSONResult;
SqlConnection conn = new SqlConnection("Server=<servername>;Database=<dbname>;user=<username>;password=<password>");
DataTable table = new DataTable();
conn.Open();
SqlCommand cmd = new SqlCommand("select name, latitude, longitude from [<schema>].[<tablename>]", conn);
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
{
adapter.Fill(table);
}
//System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
//List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
//Dictionary<string, object> row;
//foreach (DataRow dr in table.Rows)
//{
// row = new Dictionary<string, object>();
// foreach (DataColumn col in table.Columns)
// {
// row.Add(col.ColumnName, dr[col]);
// }
// rows.Add(row);
//}
//return Ok(serializer.Serialize(rows),);
JSONResult = JsonConvert.SerializeObject(table);
return Ok(JSONResult);
}
现在它按预期返回了我的结果集,但如果没有转义双引号,我根本无法让它返回,所以数据如下所示:
"[{\"name\":\"Aaron's Hill\",\"latitude\":51.18276,\"longitude\":-0.63503},{\"name\":\"Abbas Combe\",\"latitude\":51.00113,\"longitude\":-2.42178},
现在我阅读的许多答案都只是简单地说,因为您正在查看 IDE 中的结果。在我的情况下,这是不正确的,这是浏览器窗口中的输出(尝试了 IE 和 chrome),当你说给我显示 JSON 输出时,甚至 fiddler 抱怨它在位置 3 显示无效字符。
你会看到我已经注释掉了代码,这是我在这里找到的另一种返回 JSON 的方法,但它仍然会转义引号。不知道还能尝试什么?
【问题讨论】:
-
您不应该返回序列化对象。您应该返回一个将由 ASP.NET 序列化的类对象。现在,你序列化一个序列化的对象——这就是你得到转义引号的原因。
标签: asp.net json json.net asp.net-web-api2