c# - 将动态变量转换为列表或数组
问题描述
我想将这个带有 Ajax 的数组发送到 api :
var receipt = Array();
receipt = [
{ 'Service': 'Saab', 'Order': '20' },
{ 'Service': 'Volvo', 'Order': '12' },
{ 'Service': 'BMW', 'Order': '25' }
];
这是我的 Ajax 身体:
var r = JSON.stringify(receipt);
$.ajax({
type: "POST",
dataType: "Json",
contentType: "application/json; charset=utf-8",
data: r,
url: "api/Receipt",
success: function (result) {
// To Do
console.info(result);
},
error: function (result) {
console.info(result);
}
});
这就是我作为 Json 得到的:
{[
{
"Service": "Saab",
"Order": "20"
},
{
"Service": "Volvo",
"Order": "12"
},
{
"Service": "BMW",
"Order": "25"
}
]}
我在 api 方面抓住它们像这样:
[Route("api/Receipt")]
[WebMethod]
public string Receipt_Turn(object obj)
{
dynamic dyn = JsonConvert.DeserializeObject(obj.ToString());
if (dyn != null)
{
return dyn[1].ToString();
}
else
{
return "false";
}
}
它有效,该部分return dyn[1].ToString()
返回我的数组的第二条记录。但我想将此动态变量转换为模型的列表或数组。
这是我的模型:
[Serializable()]
public class Receipt
{
public string Service { get; set; }
public string Order { get; set; }
}
我想这样处理它:
string serv = receipt[1].Service;
我该怎么做 ?
谢谢...
解决方案
删除 JS 脚本中的数组部分并像这样编写:
var receipt = [
{ 'Service': 'Saab', 'Order': '20' },
{ 'Service': 'Volvo', 'Order': '12' },
{ 'Service': 'BMW', 'Order': '25' }
];
在这种形状中,您正在发送一个对象。在您的代码中,我猜您正在发送一个JArray
因此它会在从转换JArray
为另一种类型时产生一些问题。
在您的 API 端,编辑您的代码如下:
public string Receipt_Turn(object r)
{
//important Line Here
List<Receipt> rr = JsonConvert.DeserializeObject<List<Receipt>>(r.ToString());
if (rr != null)
{
return rr[1].ToString();
}
else
{
return "false";
}
}
如您所见,我们像对象一样获得它,然后我们将能够DeserializeObject
像我提到的那样准备好您的部分。
您最常声明您的模型列表,然后在部分DeserializeObject
添加您想要将其转换为的类型。
这里因为我们声明List<Receipt>
了,我们应该把我们转换DeserializeObject
成它,所以我们在<List<Receipt>>
之后添加DeserializeObject
。
最后,您可以随心所欲地使用它。
string serv = rr[1].Service;
推荐阅读
- kotlin - Kotlin 在 Jackson 中密封了类子类型
- moq - C#、xUnit类对象引用在其他测试类中冲突
- ruby-on-rails - 在 rails simple_form 中自定义所需的标签
- cassandra - 如何规划 1 台主机的 cassandra 容量规划?
- regex - 过滤点击 URL 和页面 URL 时无法触发标记/触发器
- firebase - 有没有办法让 Firebase 分析立即刷新未决事件
- r - 如何停止 grid.echo 移动绘图的轴以及如何更改绘图大小
- r - R 并行突然不再工作 - 写入连接时出错
- javascript - Plotly 分组条形图:单个元素的悬停信息
- sql - 基于 Hive 中的三个连接条件在两个表之间连接