【问题标题】:Requesting Single Record from DataBase in Json Format using WCF Rest使用 WCF Rest 从 Json 格式的数据库中请求单个记录
【发布时间】:2013-06-03 10:30:11
【问题描述】:
   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}]

我错过了记录的方括号 我的代码有什么问题?

【问题讨论】:

  • 上述代码的操作合约是[OperationContract] [WebGet(UriTemplate="User/{id}",ResponseFormat=WebMessageFormat.Json)] Users GetUserById(string id);

标签: c# json wcf-rest


【解决方案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 格式,它就会返回预期的输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多