使用WCF Rest以Json格式从数据库请求单个记录


   public Users GetUserById(string _id)
   {
        MySqlConnection conn = new MySqlConnection(connstr);
        conn.Open();
        string sql = ("select * from Books where id = " + _id);
        MySqlCommand cmd = new MySqlCommand(sql, conn);
        MySqlDataReader reader = cmd.ExecuteReader();
        Users obj = new Users();
        if (reader.Read())
        {
            obj.id = Convert.ToInt32(reader[0]);
            obj.UserName = reader[1].ToString();
        }
        reader.Close();
        conn.Close();
        return obj;
    }

我正在提取Json格式的信息,但是

将是:{"用户名":"约翰","id":1}

预计将是:[{"用户名":"约翰","id":1}]

我缺少记录的方括号我的代码有什么问题?

您期望的输出,即[{"UserName":"John","id":1}]表示Users对象的List。

所以如果你想从你的函数返回这样的输出,那么你只需要从你的函数返回一个用户列表。

但是作为你的函数名GetUserById,我认为它应该返回单个用户(所以我不知道为什么要从这个返回一个用户数组)

但是无论如何你可以通过这种方式得到预期的输出

public List<Users> GetUserById(string _id)
{
   MySqlConnection conn = new MySqlConnection(connstr);
   conn.Open();
   string sql = ("select * from Books where id = " + _id);
   MySqlCommand cmd = new MySqlCommand(sql, conn);
   MySqlDataReader reader = cmd.ExecuteReader();
   List<Users> users=new List<Users>();
   Users obj = new Users();
   if (reader.Read())
   {
     obj.id = Convert.ToInt32(reader[0]);
     obj.UserName = reader[1].ToString();
     users.Add(obj);
   }
   reader.Close();
   conn.Close();
   return users;
}

现在,当这个users转换成json格式时,它将返回预期的输出。

最新更新