C# 门店列表<;哈希表>;在列表中<;哈希表>;返回JSON

C# 门店列表<;哈希表>;在列表中<;哈希表>;返回JSON,c#,asp.net,webmethod,C#,Asp.net,Webmethod,我使用WebMethod将JSON对象返回到JavaScript。我已经能够成功地用List完成此操作。我现在需要嵌套列表,以便获得: { "SUCCESS":1, "USERS":[ {"NAME":"Michael", "AGE":10}, {"NAME":"Michael", "AGE":10} ] } 简而言之,我的代码是: Hashtable ht = new Hashtable(); List<Hashtable>

我使用WebMethod将JSON对象返回到JavaScript。我已经能够成功地用List完成此操作。我现在需要嵌套列表,以便获得:

{
    "SUCCESS":1,
    "USERS":[
        {"NAME":"Michael", "AGE":10},
        {"NAME":"Michael", "AGE":10}
    ]
}
简而言之,我的代码是:

Hashtable ht = new Hashtable();
List<Hashtable> HashList = new List<Hashtable>();
List<Hashtable> HashListUsers = new List<Hashtable>();

ht.Add("SUCCESS", 1);
ht.Add("USERS", HashListUsers);
HashList.Add(ht);

return HashList;
Hashtable ht=newhashtable();
List HashList=新列表();
List HashListUsers=新列表();
ht.添加(“成功”,1);
ht.Add(“用户”,HashListUsers);
HashList.Add(ht);
返回哈希表;
我想我可以通过将列表存储在主列表中来实现这一点


否则如何使用WebMethod获取嵌套的JSON对象?

您可以使用视图模型:

public class Result
{
    public int Success { get; set; }
    public User[] Users { get; set; }
}

public class User
{
    public string Name { get; set; }
    public int Age { get; set; }
}
然后有一个WebMethod:

[WebMethod]
public Result Foo()
{
    return new Result
    {
        Success = 1, // a boolean seems more adapted for this instead of integer
        Users = new[]
        {
            new User { Name = "Michael", Age = 10 },
            new User { Name = "Barbara", Age = 25 },
        }
    };
}

可以使用视图模型:

public class Result
{
    public int Success { get; set; }
    public User[] Users { get; set; }
}

public class User
{
    public string Name { get; set; }
    public int Age { get; set; }
}
然后有一个WebMethod:

[WebMethod]
public Result Foo()
{
    return new Result
    {
        Success = 1, // a boolean seems more adapted for this instead of integer
        Users = new[]
        {
            new User { Name = "Michael", Age = 10 },
            new User { Name = "Barbara", Age = 25 },
        }
    };
}

因此,如果我理解正确,请不要使用列表,而是使用类。类的属性(名称、年龄等)将序列化为嵌套的JSON对象?对于Users=new[]:如何从数据库添加用户?我正在使用foreach(dataTable.rows中的DataRow dr),循环遍历每个记录。如何将其添加到用户[]数组中?@Michael C.Gates,如果要动态添加记录,可以使用
列表
而不是
用户[]
。然后在每次迭代中,您只需向Users集合添加一个新元素。我就要完成了!我有:列表用户=新列表();我成功地遍历了每个类,向列表中添加了一个用户类,但是当我尝试将用户分配给该类时;它表示:无法将类型泛型列表隐式转换为用户[]。“这是怎么回事?”迈克尔·C·盖茨,太好了,这正是你应该做的。因此,在每次迭代中,您应该实例化一个新的用户类,并从您的数据集或任何东西中分配它的名称和年龄属性,并将此实例添加到列表中。因此,如果我理解正确,请使用类,而不是使用列表。类的属性(名称、年龄等)将序列化为嵌套的JSON对象?对于Users=new[]:如何从数据库添加用户?我正在使用foreach(dataTable.rows中的DataRow dr),循环遍历每个记录。如何将其添加到用户[]数组中?@Michael C.Gates,如果要动态添加记录,可以使用
列表
而不是
用户[]
。然后在每次迭代中,您只需向Users集合添加一个新元素。我就要完成了!我有:列表用户=新列表();我成功地遍历了每个类,向列表中添加了一个用户类,但是当我尝试将用户分配给该类时;它表示:无法将类型泛型列表隐式转换为用户[]。“这是怎么回事?”迈克尔·C·盖茨,太好了,这正是你应该做的。因此,在每次迭代中,您应该实例化一个新的用户类,并从您的数据集或任何东西中分配它的名称和年龄属性,然后将该实例添加到列表中。