如何使用 System.Net.Http POST 二维对象

How to POST 2 dimensional objects using System.Net.Http

Whosebug 用户您好,

我目前正在尝试 POST 一些数据到我的 C# 项目中的 webhook。但是我 运行 遇到了一些问题,试图在字典中推送超过 1 维的对象。

我正在使用 C# 给定的方法:

 private async void SendPOST(Dictionary<string, string> val)
    {
        var content = new FormUrlEncodedContent(val);
        var restponse = await client.PostAsync("https://myWebServer.com/fakeaddress", content);            
        var responseString = await restponse.Content.ReadAsStringAsync();

        Print("Respons: " + responseString);
    }

当要求如下时,这对字典中的默认键值对非常有效:

"customer": "peter",
"bank": "global bank",
"value": "2000.00",
"currency": "USD",
"location": "Berlin"

但是 webhook 需要这样的东西:

"customer": "peter",
"bank": "global bank",
"accountData": {
    "value": 2000.00,
    "currency": "USD"
    },
"location": "Berlin"

如何 POST 填写必填字段? 我确实尝试过简单地使用 stringbuilder 来欺骗自己并自己创建 JSON,但是 PostAsync 只接受内容对象,而 FormUrlEncodedContent 只接受简单的键值对。我在这里遗漏了什么吗?

edit1: 格式

您应该使用自定义对象而不是 Dictionary

public class AccountData{
  public double Value {get; set;}
  public string Currency {get; set;}
}

public class Account {
  public string Customer {get; set;}
  public string Bank {get; set;}
  public AccountData AccountData {get; set;}
  public string Location {get; set;}
}

然后你可以将对象序列化为 json 就这样。

然后改变

var content = new FormUrlEncodedContent(val);

var content = new StringContent(<yourserializedjson>, Encoding.UTF8, "application/json");