我有以下代码,在按钮单击时,我对c#controller进行ajax调用。我还需要将一些值传递给控制器。
var array = JSON.stringify(myArrayList);
$.ajax({
type: "POST",
dataType: 'json',
data: {
'type': vm.myType,
'mod': vm.myMod,
'ar' : array
},
url: rootDir + "/Home/GetData",
success: function (data) {
console.log(data);
},
error: function (xhr, status, error) {
console.log("Error");
}
});
在我的c#控制器中我有:
[HttpPost]
public IActionResult GetData(string type, string mod, string ar)
{
//I can get type and mod but having issues in getting my array data
}
My Array数据如下:
[{"id":"1","name":"John"},{"id":"2","name":"Steve"}]
在我的循环中,我想抓住并命名值。我试过
JArray v = JArray.Parse(ar);
但是不能循环并获得值
更新
我认为我的json数组存在问题,因为我无法在c#controller中获取json数组的值。
当我在java脚本中调试我的数组时,它的值如下:
Array(2)
0 Object
id: "1"
name: "John"
1 Object
id: "2"
name: "Steve"
我使用Json.stringify后如下:
var array = JSON.stringify(myArrayList);
现在在我的C#控制器中,我得到了结果字符串:
[{"id":"1","name":"John"},{"id":"2","name":"Steve"}]
我认为这是不对的,因为当我使用下面的代码时: dynamic stuff = JObject.Parse(ar);
它抛出错误:
'Error reading JObject from JsonReader. Current JsonReader item is not an object:
答案 0 :(得分:3)
您需要强制转换为正确的类型进行枚举:
</mainClass>
输出
</manifest>
但我真的建议同步你的前端和后端数据模型
<manifestEntries>
输出
<Class-Path>
答案 1 :(得分:0)
由于JArray是Newtonsoft,你可以使用这样的东西进行反序列化,然后遍历结果:
var m_json = JsonConvert.DeserializeObject(ar);
foreach (var item in m_json)
{
Console.Write(item.name);
}