Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c上反序列化javascript数组#_Javascript_C#_Json - Fatal编程技术网

在c上反序列化javascript数组#

在c上反序列化javascript数组#,javascript,c#,json,Javascript,C#,Json,我试图将JSON数组从javascript发送到c#,但反序列化时总是出错。 首先,我尝试序列化普通的js数组JSON.stringify(order),但在c上,我得到了 无法将当前JSON对象(例如{“name”:“value”})反序列化为“Order[]”类型,因为该类型需要JSON数组(例如[1,2,3])才能正确反序列化 Order[] order = JsonConvert.DeserializeObject<Order[]>(json); //this is line

我试图将JSON数组从javascript发送到c#,但反序列化时总是出错。 首先,我尝试序列化普通的js数组
JSON.stringify(order)
,但在c上,我得到了

无法将当前JSON对象(例如{“name”:“value”})反序列化为“Order[]”类型,因为该类型需要JSON数组(例如[1,2,3])才能正确反序列化

Order[] order = JsonConvert.DeserializeObject<Order[]>(json); //this is line with error
Order[]Order=JsonConvert.DeserializeObject(json)//这是一个错误
之后,我尝试将js数组转换为对象,然后序列化为json

function toObject(arr) {
var rv = {};
for (var i = 0; i < arr.length; ++i)
    rv[i] = arr[i];
return rv;
}

{"0":["Item1","2"],"1":["Item2","1"]} //JSON
函数对象(arr){
var rv={};
对于(变量i=0;i

这就是JSON现在的样子,但又是一个相同的错误。

看看JsonConvert.DeserializeObject它是一个Newtonsoft库。

看起来您试图反序列化对象而不是数组。在使用toObject函数转换json之前,您能展示一下它的样子吗?看起来像:[“Item1”、“2”]、[“Item2”、“1”]],所以您是从数组的javascript数组发送的。如果希望JsonConvert.DeserializeObject(json)将其反序列化为顺序[],则需要确保发送的是对象数组,例如[{“Name”:“Item1”,“Id”:1},{“Name”:“Item2”,“Id”:2}],您需要执行类似于此的操作
let ob={};ob['Name']=“Item1”;ob['金额]]=1;订单。推送(ob)
。您需要记住,要序列化/反序列化的数据结构必须在c#和javascript中具有相同的字段(我猜c#中的Order类型具有字段“Name”和“Amount”,您需要根据实际情况进行调整)让我们来看看。