首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用双引号包装的JSON字符串-不能从JSON写出值- (asp.net webservice到JSON到jQuery)

用双引号包装的JSON字符串-不能从JSON写出值- (asp.net webservice到JSON到jQuery)
EN

Stack Overflow用户
提问于 2014-06-11 12:21:54
回答 1查看 1.5K关注 0票数 1

我试图使用asp.net web服务将从MySql数据库获得的JSON数据发送到web应用程序,该应用程序使用jQuery显示通过JSON发送的数据。

我的webservice方法如下所示:

代码语言:javascript
复制
[WebMethod(Description = "yet another test .....")]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetCustomerByIDTRY()
{
string connString = System.Configuration.ConfigurationManager.ConnectionStrings["my_domain_mysql"].ConnectionString;
MySqlConnection connection1 = new MySqlConnection(connString);
MySqlCommand cmd = new MySqlCommand("SELECT Vet_Users.FirstName, Vet_Users.LastName, Vet_Users.UserID, Vet_Customer.CusID FROM Vet_Users JOIN Vet_Customer ON Vet_Users.UserID=Vet_Customer.UserID");
DataSet CusIDDataSet = new DataSet();
MySqlDataAdapter CusIDDataAdapter = new MySqlDataAdapter(cmd);
CusIDDataAdapter.SelectCommand.Connection = connection1;
CusIDDataAdapter.Fill(CusIDDataSet, "reading");
connection1.Close();
StringBuilder JSON = new StringBuilder();
JSON.Append("{");
JSON.Append("\"NumberOfCustomers\":\"" + CusIDDataSet.Tables[0].Rows.Count.ToString() + "\", ");
JSON.Append("\"Customer\":[");
foreach (DataRow rs in CusIDDataSet.Tables[0].Rows)
{
JSON.Append("{");
JSON.Append("\"CusID\":\"" + rs["CusID"].ToString() + "\",");
JSON.Append("\"FirstName\":\"" + rs["FirstName"].ToString() + "\",");
JSON.Append("\"LastName\":\"" + rs["LastName"].ToString() + "\",");
if (JSON.ToString().EndsWith(","))
JSON = JSON.Remove(JSON.Length - 1, 1);
JSON.Append("},");
}
if (JSON.ToString().EndsWith(","))
JSON = JSON.Remove(JSON.Length - 1, 1);
JSON.Append("]}");
return JSON.ToString();
}

JSON是这样返回的:

代码语言:javascript
复制
Object { d="{"NumberOfCustomers":"1...","LastName":"Woods"}]}"}

它包装在一个"d“中,导致了asp.net 3.5+安全问题。(http://encosia.com/never-worry-about-asp-net-ajaxs-d-again/)

但是我的JSON是用双引号包装的,我不知道为什么。

代码语言:javascript
复制
"{"NumberOfCustomers":"15", "Customer":[{"CusID":"1","FirstName":"Ina","LastName":"Williamson"},{"CusID":"2","FirstName":"Hyacinth","LastName":"Brady"},{"CusID":"3","FirstName":"Coby","LastName":"Shannon"}]}"

这是jQuery函数,我试着工作:

function FinalTest() { $.ajax({ type: "POST", url: "url", data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { alert(eval(data.d.NumberOfCustomers)); } }); };

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-11 15:08:28

不要手动序列化JSON。框架将为您处理这一问题。更多信息在这里:http://encosia.com/asp-net-web-services-mistake-manual-json-serialization/

这样做,JavaScriptSerializer将为您处理构建有效的JSON:

代码语言:javascript
复制
public class Customer {
  public string CusID { get; set; }
  public string FirstName { get; set; }
  public string LastName { get; set; }
}

[WebMethod(Description = "yet another test .....")]
[ScriptMethod]
public object GetCustomerByIDTRY() {
  string connString = System.Configuration.ConfigurationManager.ConnectionStrings["my_domain_mysql"].ConnectionString;
  MySqlConnection connection1 = new MySqlConnection(connString);
  MySqlCommand cmd = new MySqlCommand("SELECT Vet_Users.FirstName, Vet_Users.LastName, Vet_Users.UserID, Vet_Customer.CusID FROM Vet_Users JOIN Vet_Customer ON Vet_Users.UserID=Vet_Customer.UserID");
  DataSet CusIDDataSet = new DataSet();
  MySqlDataAdapter CusIDDataAdapter = new MySqlDataAdapter(cmd);
  CusIDDataAdapter.SelectCommand.Connection = connection1;
  CusIDDataAdapter.Fill(CusIDDataSet, "reading");
  connection1.Close();

  var customers = new List<Customer>();

  foreach (DataRow rs in CusIDDataSet.Tables[0].Rows) {
    customers.Add(new Customer {
      CusID = rs["CusID"].ToString(),
      FirstName = rs["FirstName"].ToString(),
      LastName = rs["LastName"].ToString()
    });
  }

  return new {
    NumberOfCustomers = CusIDDataSet.Tables[0].Rows.Count.ToString(),
    Customer = customers
  };
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24162819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档