在.NET中将“原始”请求转换为JSON(Rest服务)

时间:2018-05-24 16:09:09

标签: c# .net restsharp

如果我的帖子没有任何意义,请提前道歉。我必须创建一个调用REST服务URL(POST)的API。

这是样本有效负载:

{
  "request": {
    " TestRequest": {
      "OrderID": {
        "orderNumber": "12345",
        "category": "ABC"
      },
      "SecondCategory": "DEF"
    }
  }
}

如何在我的API中传递此内容?我对此很新,所以我不知道。我在Postman中对它进行了测试,它工作正常,但我只需按原样粘贴这个原始请求。我是否必须将其转换为JSON

谢谢

2 个答案:

答案 0 :(得分:1)

有很多方法!大量客户端框架为你连接类型的东西,jQuery,SignalR,Atmosphere,..

要记住的是,您发送的数据并不是接收方为处理您的消息可能需要的唯一数据。它将包含描述消息的“标题”,以及包含数据的“正文”。

有很多例子,我个人最喜欢的:https://api.jquery.com/jQuery.post/

回到你的问题

  

我必须将其转换为JSON

不是真的,但您必须将其转换为服务器可以理解的内容。因为它通过网络,它需要被序列化,并指定JSON,因为该序列化方法很常见。在内部,我希望如果它不是一个字符串,那么框架将为你自动序列化,但是他们想要。

答案 1 :(得分:1)

  

我是否必须将其转换为JSON?

从技术上讲,您在此处发布的内容 JSON。 JSON只是一个序列化为字符串的 J ava S cript O 对象(N用于 N 浮选)。

当谈到如何在C#中处理这个问题时,有许多潜在的选择。

如果您只使用这样的小JSON有效负载进行几次调用,则可以使用基本的C#字符串处理:

var orderNumber = "12345";
var category = "ABC";
var secondCategory = "DEF";
var JsonString =
    $"{{\"request\":{{\"TestRequest\":{{\"OrderID\":{{\"orderNumber\": \"{orderNumber}\",\"category\":\"{category}\"}},\"SecondCategory\":\"{secondCategory}\"}}}}}}";

虽然将它视为字符串非常简单,但随着时间的推移它并不是很容易维护。哎呀,我写了那个字符串,甚至我看不懂它。 ;)

更好的选择是构造与所需JSON结构匹配的类,然后使用Json.NET在运行时序列化它们。 Json.NET是一个非常强大和高效的JSON库。

首先,您需要定义与JSON结构相匹配的类:

public class Root {
    public Request request { get; set; }
}

public class Request {
    public TestRequest TestRequest { get; set; }
}

public class TestRequest {
    public OrderID OrderID { get; set; }
    public string SecondCategory { get; set; }
}

public class OrderID {
    public string orderNumber { get; set; }
    public string category { get; set; }
}

然后,您可以使用Json.NET将这些序列化为JSON字符串:

string json = JsonConvert.SerializeObject(root, Formatting.Indented);