我已经阅读了无数的问题和答案,但还没有看到任何解决问题的东西。.NET 4.0 Web API返回JSON而不转义字符
我正在使用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输出它说在第3位无效字符。
你会看到我已经注释掉了代码,这是我在这里找到的返回JSON的另一种方法,但仍然可以避免引号。不知道还有什么要尝试?
您不应该返回序列化对象。您应该返回一个将由ASP.NET序列化的类对象。现在,你序列化一个序列化的对象 - 这就是为什么你得到逃脱报价。 –