我从Ajax调用中获取数据,它给出的json输出在我的代码中已经提到--在Jobsheet参数后面,json对象如何在反序列化中传递该参数并从中获取值
这是我的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对象(例如,{“名称”:“值”})才能正确反序列化。要修复此错误,要么将JSON更改为JSON对象(例如,{"name":"value"}),要么将反序列化类型更改为数组,或者将实现集合接口(例如ICollection、IList)的类型改为可以从JSON数组反序列化的列表。还可以将JsonArrayAttribute添加到该类型中,以强制它从JSON数组中反序列化。路径'',第1行,位置1。
请帮助我将上述json数据转换为元素列表(或)数组。
发布于 2020-04-13 08:17:28
您可以将Jobsheet反序列化为对象列表,而不是RootObject,如下所示:
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希望这能帮到你。
https://stackoverflow.com/questions/61182991
复制相似问题