【问题标题】:Nested values with POST using Flurl使用 Flurl 的 POST 嵌套值
【发布时间】:2020-09-17 20:57:18
【问题描述】:

所以我是一名 Ruby 开发人员,正在使用 C# 并试图弄清楚如何将 Flurl 与我的端点一起使用。

这是我可以使用 Ruby 成功传递的 JSON。

  {
    type: "workorder.generated",
    data: [{
        id: order.id,
        type: "orders"
      },{
        id: second_order.id,
        type: "orders"
      },{
        id: bad_order.id,
        type: "orders"
      }
    ]
  }

所以在 Flurl 中使用 C# 我并不是 100% 了解如何构建它。

var response = await GetAPIPath()
    .AppendPathSegment("yardlink_webhook")
    .WithOAuthBearerToken(GetAPIToken())
    .PostJsonAsync(new
    {
        type = "workorder.generated",
        data = new
        {

        }

    })
    .ReceiveJson();

在获取类似于 Ruby 示例的嵌套数据方面有什么帮助吗?

【问题讨论】:

  • 您的问题是什么?你的代码看起来不错
  • @DervişKayımbaşıoğlu 正确嵌套 json 的 data 部分的语法。在 JSON 的 Ruby 版本中,data 是由idtype 组成的元素数组。不知道如何在 C# 中做到这一点,所以 Flurl 会正确处理它。

标签: c# .net flurl


【解决方案1】:

检查一下

var x = new
{
    type = "workorder.generated",
    data = new[]{ new {
        id= 1,
        type= "orders"
      },new {
        id= 2,
        type= "orders"
      },new {
        id= 3,
        type= "orders"
      }
    }
}

【讨论】:

  • 太棒了!那行得通。来自 Ruby 的 C# 是如此冗长的语言。我想我仍然需要学习基础知识。
【解决方案2】:

所以 flurl 接受几个不同的输入,

  • 首先是json字符串:你可以序列化你的对象并传入它,
  • 第二个是对象:将 C# object 传入其中 - 您当前正在执行的操作。

两者都要求您将数据作为对象。有两种方法可以创建您的对象

  • 根据类创建数据结构,
  • 创建一个匿名对象 - @Derviş 的建议

如果您经常使用此数据模型,并且需要进行操作,我建议您创建类来为您的对象建模。

以下是您可以根据需要创建类的方法:

public class YourObject {
    public string type;
    public List<YourDataObject> data;
}

public class YourDataObject {
    public string id;
    public string type;
}

您需要知道如何初始化对象并为其设置数据,但这是总体思路。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 2021-07-27
    • 2018-12-20
    相关资源
    最近更新 更多