C# jquery如何在c中编写正确的json对象#

C# jquery如何在c中编写正确的json对象#,c#,jquery,asp.net,json,C#,Jquery,Asp.net,Json,用c#编写json对象的最佳方法是什么?我有一段代码,应该是从DB中获取数据并编写json对象,但我还没有弄清楚这一点 [WebMethod] public static string get_specialities(string ProfessionalID) { Database db = DatabaseFactory.CreateDatabase("Connection String2"); DbCommand dbCommand; dbCommand = db

用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;
}
这将返回以下格式错误的对象

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

我做错了什么?

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

{"d":[{"id":67,"name":"Kardiyoloji"}]}
您可以使用jsonlint进行检查:

使用序列化程序。 我建议使用NewtonSoft。
您可以在附近找到许多示例,否则在此处要求提供一段代码

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

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

是否要再次反序列化d的值?

我假设您不知道如何在字符串中写入特殊字符,在您的情况下,该字符串是
双配额

替换:
“{id:+dr[“SpecialtyID”].ToString().Trim()+”,名称:“+dr[“SpecialtyName”].ToString().Trim()+”}”;

为了

“{\“id\”:“+dr[“SpecialtyID”].ToString().Trim()+“\”,“name\”:\“+dr[“SpecialtyName”].ToString().Trim()+“\”

我会做你需要的。 但更好的方法是使用
NewtonSoft
序列化程序来处理JSON


希望能有所帮助。

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

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

您可以使用。我还使用。

尝试使用以下方法:

List people=newlist();
人员p=新人员();
while(dr.Read()){
p=新人();
p、 id=dr[“SpecialtyID”].ToString().Trim();
p、 name=dr[“SpecialtyName”].ToString().Trim();
新增(p);
}
JavaScriptSerializer serializer=新的JavaScriptSerializer();
string return\u str=serializer.Serialize(人);

NewtonSoft.JSON
是您需要的。小建议在创建字符串时使用
StringBuilder
,这会使性能有所不同。如何将其作为json对象而不是字符串返回
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);