如果我的帖子没有任何意义,请提前道歉。我必须创建一个调用REST服务URL(POST
)的API。
这是样本有效负载:
{
"request": {
" TestRequest": {
"OrderID": {
"orderNumber": "12345",
"category": "ABC"
},
"SecondCategory": "DEF"
}
}
}
如何在我的API中传递此内容?我对此很新,所以我不知道。我在Postman中对它进行了测试,它工作正常,但我只需按原样粘贴这个原始请求。我是否必须将其转换为JSON
?
谢谢
答案 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);