asmx返回没有对象名称的嵌套json

时间:2014-02-05 15:11:37

标签: jquery ajax json knockout.js asmx

我有一个asmx webservice,它调用一个方法来构建一个2级嵌套列表List,每个组都包含一个List。 json被用于通过knockout.js填充和手风琴。当嵌套对象返回到jquery ajax调用时,嵌套对象(以及带有stingified的json)不包含任何对象名称。

我知道我遗漏了一些基本的东西,但我感到很茫然......并且花了两天时间无济于事。

我期待(请忽略逃脱):

[{\"__type\":\"Group\",\"id\":1488,\"name\":\"Baby Books\",\"categories\":[{\"__type\":\"GroupCategory\",\"id\":152,\"name\":\"Activity Books\",\"value\":\"Ignore\"}]}]

但是我正在

[{\"id\":1488,\"name\":\"Baby Books\",\"categories\":[{\"id\":152,\"name\":\"Activity Books\",\"value\":\"Ignore\"}]}]

这些类定义为:

public class Group
{
    public int id;
    public string name;
    public List<GroupCategory> categories;

    public Group(int id, string name)
    {
        this.id = id;
        this.name = name;
        this.categories = new List<GroupCategory>();
    }
}

public class GroupCategory
{
    public int id;
    public string name;
    public string value;


    public GroupCategory(int id, string name)
    {
        this.id = id;
        this.name = name;
        this.value = CategoryValue.Ignore.ToString();
    }
}

public enum CategoryValue
{
    UseCategoryValue,
    Ignore,
    Included,
    Excluded,
}

asmx和构建方法是:

[WebMethod]
public List<Group> GetIncludeExcludeJson()
{
    var Groups =  new List<Group>();
    ShopAssistGroupHandler.getInExCategories(Groups);
    return Groups;
}

public static void getInExCategories(List<Group> Groups, CategoryValue defaultValue = CategoryValue.UseCategoryValue)
{
    var inexGroups = GroupCategoryHelper.GetGroups();

    try
    {
        foreach (GroupCategoryDictionary dGroup in inexGroups.Values)
        {
            var Group = new Group(dGroup.ParentGroupCategory.CategoryID, dGroup.ParentGroupCategory.Name);
            Groups.Add(Group);

            foreach (var groupCategory in dGroup.Values)
            {
                var category = new GroupCategory(groupCategory.CategoryID, groupCategory.Name);
                Group.categories.Add(category);
                if (defaultValue == CategoryValue.UseCategoryValue)
                {
                    category.value = groupCategory.ExtensionData == null
                                          ? ""
                                          : groupCategory.ExtensionData;
                    category.value = category.value == CategoryValue.Excluded.ToString()
                                          ? CategoryValue.Excluded.ToString()
                                          : CategoryValue.Ignore.ToString();
                }
                else
                {
                    category.value = defaultValue.ToString();
                }
            }
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

感谢您的帮助 - 感觉非常愚蠢; - } 雅培

0 个答案:

没有答案