我正在从Ajax调用获取数据,其给出的json输出如下所述在我的代码隐藏的[[Jobsheet参数中具有json Array object如何在反序列化中传递该参数并从中获取值
这是我的Json输出:string Jobsheet =[{"var_name_data":"Demo1Demo2Demo3Demo4Demo5Demo6Demo7Demo8Demo9Demo10 1,2,3,4,5,6,7,8,9,10"}]
我的班级:
public class RootObject { public List<User> var_name_data { get; set; } } public class User { public string first_name { get; set; } public int customer_id { get; set; } }
在我的隐藏代码中:
[WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public static object Details4(string selectedJobSheet) { try { var des = (RootObject)Newtonsoft.Json.JsonConvert.DeserializeObject(selectedJobSheet, typeof(RootObject)); return des.var_name_data.Count.ToString(); } catch (Exception) { throw; } }
引发异常:[Newtonsoft.Json.JsonSerializationException类型的异常在EBCheckList.dll中发生,但未在用户代码中处理附加信息:无法将当前JSON数组(例如[1,2,3])反序列化为类型'EBCheckDAL.RootObject',因为该类型需要JSON对象(例如{“ name”:“ value”})才能正确反序列化。要解决此错误,可以将JSON更改为JSON对象(例如{“ name”:“ value”}),也可以将反序列化类型更改为数组或实现集合接口的类型(例如ICollection,IList),例如List从JSON数组反序列化。还可以将JsonArrayAttribute添加到类型中,以强制其从JSON数组反序列化。路径”,第1行,位置1。出现[请帮助我将上述json数据转换为列表(或)元素数组
public class User
{
public string Var_name_data { get; set; }
}
2-反序列化Jobsheet
:
string Jobsheet = @"[{""var_name_data"":""Demo1Demo2Demo3Demo4Demo5Demo6Demo7Demo8Demo9Demo10 1,2,3,4,5,6,7,8,9,10""}]";
List<User> users = JsonConvert.DeserializeObject<List<User>>(Jobsheet);
Demo:
foreach(User user in users) { Console.WriteLine(user.Var_name_data); } // or Console.WriteLine(users.count);
结果:
Demo1Demo2Demo3Demo4Demo5Demo6Demo7Demo8Demo9Demo10 1,2,3,4,5,6,7,8,9,10
//or
1
希望对您有帮助。