将动态变量转换为 List<model> 或数组
Posted
技术标签:
【中文标题】将动态变量转换为 List<model> 或数组【英文标题】:Converting a dynamic Variable to List<model> or array 【发布时间】:2021-07-04 18:00:45 【问题描述】:我想将这个带有 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;
我该怎么做?
谢谢...
【问题讨论】:
你能分享你通过 Ajax 发布的 json 吗? 当然。谢谢回复??? .我更新了我的问题。 @ChetanRanpariya 这也是我的问题。我将按照这个问题找到我的答案。干杯@ChetanRanpariya 【参考方案1】:删除 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
转换为它,所以我们在DeserializeObject
之后添加<List<Receipt>>
。
最后你可以随心所欲地使用它。
string serv = rr[1].Service;
【讨论】:
天啊,你不仅解决了我的问题。你救了我的命。谢谢你 10000 次。你的回答很棒而且很完整,我没有问题....@ImanS3 欢迎您。?? @SelenaMG【参考方案2】:假设您使用的是 .NET Core,如果您执行以下操作,它应该能够自动绑定它:
```
[Route("api/Receipt")]
[WebMethod]
public string Receipt_Turn(List<Receipt> receipts)
if (receipts != null)
return "seomthing";
else
return "false";
```
【讨论】:
不,我正在使用 asp.net 网络表单,我试过了。值为 null 。我试过Receipt receipt
。在这种状态下receipt
就像一个数组,甚至会出现记录数。但在每条记录中,Service
和 Order
是 null
.@dmalcaba以上是关于将动态变量转换为 List<model> 或数组的主要内容,如果未能解决你的问题,请参考以下文章
如何将 List<Map<String,dynamic> 转换为 Dart 中的单个变量?
list<model>类型转换为json格式的,在线等大神的帮忙
是否可以将 MVC C# List<int> 转换为 javascript 数组?