c# - 如何序列化两个参数Json转换?

标签 c# json xamarin asp.net-web-api json.net

我有一个 xamarin 表单应用程序和一个使用 ASP.net 创建的 REST web api。 Web API 正在远程服务器上运行。在那个 web api 中,我有用于数据库查询的类。我需要将服务器地址、用户名、密码和数据库名称作为连接字符串从我的 xamarin 应用程序传递到该特定类。如何同时序列化连接字符串和对象?

我的数据库查询

public void addSalesReport(string connstr, SalesReport salesreport)
    {

        MySqlConnection myconn = new MySqlConnection(connstr);
        string d = salesreport.Date.ToString("yyyy-MM-dd");

        String sqlstr = "INSERT INTO salesreport (ID,sDate,ColorCopy,BwCopy,4RPrints,Misc,ExternalOrder,TotalSales,BwWastage,ColorWastage,Remarks) VALUES ('" + salesreport.ID + "','" + d + "'," + salesreport.ColorCopy + "," + salesreport.BwCopy + "," + salesreport.p4rPrint + "," + salesreport.Misc + ","+salesreport.ExternalOrder+","+salesreport.TotalSales+","+salesreport.BwWastage+","+salesreport.ColorWastage+",'"+salesreport.Remarks+"')";
        MySqlCommand cmd = new MySqlCommand(sqlstr, myconn);
        myconn.Open();
        cmd.ExecuteNonQuery();
        myconn.Close();
        myconn.Dispose();

    }

控制发布数据到Mysql数据库

 [HttpPost]
    [Route("api/SalesReport", Name = "salesReport")]
    public void PostUpdate([FromBody]string connstr , SalesReport value)
    {
        SalesDBConn db = new SalesDBConn();
        db.addSalesReport(connstr, value);
    }

我的 Xamarin 应用中的数据服务类

public async void addSalesReport(string connstr, SalesReport salesReport)
    {
        var conn = JsonConvert.SerializeObject(connstr);
        var contentstr = new StringContent(conn, Encoding.UTF8, "application/json");

        var data = JsonConvert.SerializeObject(salesReport);
        var content =  new StringContent(data, Encoding.UTF8, "application/json");

        var response = await client.PostAsync("http://myserverdomain.com/api/SalesReport", contentstr, content);

    }

最佳答案

首先,我们必须引入一个新类,它将充当您的两个输入的包装容器。现在,每当我们序列化该类时,两个输入都会一起序列化:

public class DataToPost
{
    public string ConnectionString { get; set; }
    public SalesReport SalesReportData { get; set; }
}

然后更改 addSalesReport 方法,如下面的代码片段所示:

public async void addSalesReport(string connstr, SalesReport salesReport)
{
    HttpClient client = new HttpClient();

    var objectDataToPost = new DataToPost { ConnectionString = connstr, SalesReportData = salesReport };
    var data = JsonConvert.SerializeObject(objectDataToPost);
    var content = new StringContent(data, Encoding.UTF8, "application/json");
    
    var response = await client.PostAsync("http://myserverdomain.com/api/SalesReport", content, CancellationToken.None);

}

关于c# - 如何序列化两个参数Json转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45275235/

相关文章:

c# - 用于数组访问的硬编码索引

json - 从 R 中的字典列表中提取数据

java - 在 Android 开发中何时使用 Bitmap 与 Byte[]?

google-maps - 在 Xamarin Forms 中使用自定义 map 样式?

c# - 带圆角的外壳弹出窗口

c# - Visual Studio Selenium WebDriver 路径错误

c# - 为 ComboBox 指定转换器

jquery - 谷歌日历 CORS 错误

c# - 自动生成不可变类和匹配的构建器类

php - 这是正确的 JSON 数据结构吗?