首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Json数组反序列化为列表(或)数组

如何将Json数组反序列化为列表(或)数组
EN

Stack Overflow用户
提问于 2020-04-13 07:05:53
回答 1查看 151关注 0票数 1

我从Ajax调用中获取数据,它给出的json输出在我的代码中已经提到--在Jobsheet参数后面,json对象如何在反序列化中传递该参数并从中获取值

这是我的Json输出:

代码语言:javascript
复制
string Jobsheet =[{"var_name_data":"Demo1Demo2Demo3Demo4Demo5Demo6Demo7Demo8Demo9Demo10 1,2,3,4,5,6,7,8,9,10"}]

我的班:

代码语言:javascript
复制
 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; }
}

在“我的守则”中:

代码语言:javascript
复制
   [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数据转换为元素列表(或)数组。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-13 08:17:28

您可以将Jobsheet反序列化为对象列表,而不是RootObject,如下所示:

1-创建与json对象匹配的对象:

代码语言:javascript
复制
public class User
{
    public string Var_name_data { get; set; }
}

2-反序列化Jobsheet

代码语言:javascript
复制
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

代码语言:javascript
复制
foreach(User user in users)
{
    Console.WriteLine(user.Var_name_data);
}
// or
Console.WriteLine(users.count);

结果

代码语言:javascript
复制
Demo1Demo2Demo3Demo4Demo5Demo6Demo7Demo8Demo9Demo10 1,2,3,4,5,6,7,8,9,10
//or
1

希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61182991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档