Jquery如何在c#中编写合适的json对象

本文关键字:json 对象 Jquery | 更新日期: 2023-09-27 18:07:28

用c#写json对象的最好方法是什么?我有一段代码,应该从DB获取数据,写json对象,但我还没有我的头脑清楚这个

[WebMethod]
public static string get_specialities(string ProfessionalID)
{
    Database db = DatabaseFactory.CreateDatabase("Connection String2");
    DbCommand dbCommand;
    dbCommand = db.GetStoredProcCommand("select_Professionals_Speciality");
    db.AddInParameter(dbCommand, "prof_id", DbType.Int16, Convert.ToInt16(ProfessionalID));
    IDataReader dr = db.ExecuteReader(dbCommand);
    //[{ id: 3, name: "test3" }]
    string return_str="[";
    int i = 0;
    while (dr.Read()) {
        if (i > 0)
            return_str += ",";
        return_str += "{id:" + dr["SpecialtyID"].ToString().Trim() + ",name:" + dr["SpecialtyName"].ToString().Trim() + "}";
        i++;
    }
    return_str += "]";
    return return_str;
}

this返回下面的对象,格式错误

{"d":"[{id:67,name:Kardiyoloji}]"}

我做错了什么?

Jquery如何在c#中编写合适的json对象

尝试使用JavaScriptSerializer类:

List<Person> people = new List<Person>();
Person p = new Person();
while (dr.Read()) {
    p = new Person();
    p.id = dr["SpecialtyID"].ToString().Trim();
    p.name = dr["SpecialtyName"].ToString().Trim();
    people.Add(p);
}
JavaScriptSerializer serializer = new JavaScriptSerializer();
string return_str = serializer.Serialize(people);

关于您提供的代码,正确的json应该是:

{"d":[{"id":67,"name":"Kardiyoloji"}]}

你可以用jsonlint检查:http://jsonlint.com/

使用序列化器。我推荐NewtonSoft。您可以在这里找到很多示例,否则请在这里提供代码片段

直接转换为字符串通常不是一个好主意…您应该使用序列化,例如job…但是你可以试试这样

{"d":'[{"id":67,"name":"Kardiyoloji"}]'}

你又要反序列化d的值吗?

我假设你不知道如何在你的字符串中编写特殊字符,这是"在你的情况下的双配额?

替换:"{id:" + dr["SpecialtyID"].ToString().Trim() + ",name:" + dr["SpecialtyName"].ToString().Trim() + "}";

"{'"id'":" + dr["SpecialtyID"].ToString().Trim() + "'",'"name'":'"" + dr["SpecialtyName"].ToString().Trim() + "'"}";

可以满足您的需要。但是更好的方法是使用NewtonSoft序列化器来处理JSON。

希望有帮助。

我建议您避免手动构建JSON字符串。

而是将db数据映射到相应的对象(实体?),然后将其序列化为JSON。

你可以使用Javascript序列化器。我还使用JayRock库