0
   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 格式提供信息,但是

输出为:{"UserName":"John","id":1}

预期输出为:[{"UserName":"John","id":1}]

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

4

1 回答 1

3

您的预期输出即[{"UserName":"John","id":1}] 代表Users对象列表。

因此,如果您希望这样的输出应该从您的函数返回,那么您只需要从您的函数返回一个用户列表。

但是作为您的函数名称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 格式,它就会返回预期的输出。

于 2013-06-07T07:44:16.060 回答