在 .NET 中将 "raw" 请求转换为 JSON(休息服务)
Converting "raw" request to JSON (Rest Services) in .NET
如果我的 post 没有任何意义,请提前致歉。我必须创建一个 API 来调用 REST 服务 URL (POST
)。
这是示例负载:
{
"request": {
" TestRequest": {
"OrderID": {
"orderNumber": "12345",
"category": "ABC"
},
"SecondCategory": "DEF"
}
}
}
如何在我的 API 中传递它?我对此很陌生,所以我不知道。我在 Postman 中对此进行了测试,它运行良好,但我只需要按原样粘贴这个原始请求。我是否必须将其转换为 JSON
?
谢谢
有很多方法!大量客户端框架为您连接类型的东西,jQuery、SignalR、Atmosphere,..
但要记住,您发送的数据并不是接收方处理您的消息可能需要的唯一数据。它将包含描述消息的 "headers" 和包含您的数据的 "body"。
有很多示例,我个人最喜欢的示例:https://api.jquery.com/jQuery.post/
return你的问题
DO I have to convert it into JSON
不是真的,但您必须将其转换为您的服务器可以理解的内容。因为它通过网络传输,所以需要序列化,并且指定 JSON 作为序列化方法是很常见的。在内部,我希望如果它已经不是一个字符串,那么框架将自动为你序列化它,但是他们想要。
Do I have to convert it into JSON?
从技术上讲,您在此处发布的内容 是 JSON。 JSON 只是一个 JavaScript Object 序列化为一个字符串( 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);
如果我的 post 没有任何意义,请提前致歉。我必须创建一个 API 来调用 REST 服务 URL (POST
)。
这是示例负载:
{
"request": {
" TestRequest": {
"OrderID": {
"orderNumber": "12345",
"category": "ABC"
},
"SecondCategory": "DEF"
}
}
}
如何在我的 API 中传递它?我对此很陌生,所以我不知道。我在 Postman 中对此进行了测试,它运行良好,但我只需要按原样粘贴这个原始请求。我是否必须将其转换为 JSON
?
谢谢
有很多方法!大量客户端框架为您连接类型的东西,jQuery、SignalR、Atmosphere,..
但要记住,您发送的数据并不是接收方处理您的消息可能需要的唯一数据。它将包含描述消息的 "headers" 和包含您的数据的 "body"。
有很多示例,我个人最喜欢的示例:https://api.jquery.com/jQuery.post/
return你的问题
DO I have to convert it into JSON
不是真的,但您必须将其转换为您的服务器可以理解的内容。因为它通过网络传输,所以需要序列化,并且指定 JSON 作为序列化方法是很常见的。在内部,我希望如果它已经不是一个字符串,那么框架将自动为你序列化它,但是他们想要。
Do I have to convert it into JSON?
从技术上讲,您在此处发布的内容 是 JSON。 JSON 只是一个 JavaScript Object 序列化为一个字符串( 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);