Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery asmx返回没有对象名称的嵌套json_Jquery_Ajax_Json_Knockout.js_Asmx - Fatal编程技术网

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

Jquery asmx返回没有对象名称的嵌套json,jquery,ajax,json,knockout.js,asmx,Jquery,Ajax,Json,Knockout.js,Asmx,我有一个ASMXWebService,它调用一个方法来构建一个两级嵌套列表,每个组包含一个列表。json被用于通过knockout.js填充和编辑。当嵌套对象返回到jquery ajax调用时,嵌套对象(以及stingified json)不包含任何对象名称 我知道我错过了一些基本的东西,但我不知所措。。。而且花了两天都没有用 我期待着(请忽略逃跑): 但是我越来越 [{\"id\":1488,\"name\":\"Baby Books\",\"categories\":[{\"id\":152

我有一个ASMXWebService,它调用一个方法来构建一个两级嵌套列表,每个组包含一个列表。json被用于通过knockout.js填充和编辑。当嵌套对象返回到jquery ajax调用时,嵌套对象(以及stingified json)不包含任何对象名称

我知道我错过了一些基本的东西,但我不知所措。。。而且花了两天都没有用

我期待着(请忽略逃跑):

但是我越来越

[{\"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,
}
公共类组
{
公共int id;
公共字符串名称;
公开名单类别;
公共组(int-id,字符串名称)
{
this.id=id;
this.name=名称;
this.categories=新列表();
}
}
公共类组类别
{
公共int id;
公共字符串名称;
公共字符串值;
public GroupCategory(int-id,字符串名)
{
this.id=id;
this.name=名称;
this.value=CategoryValue.Ignore.ToString();
}
}
公共枚举类别值
{
UseContegoryValue,
忽视
包括,
排除,
}
asmx和构建方法包括:

[WebMethod]
public List<Group> GetIncludeExcludeJson()
{
    var Groups =  new List<Group>();
    ShopAssistGroupHandler.getInExCategories(Groups);
    return Groups;
}
[WebMethod]
公共列表GetIncludeExcludeJson()
{
变量组=新列表();
ShopAssistGroupHandler.getInExCategories(组);
返回组;
}

public static void getInExCategories(列表组,CategoryValue defaultValue=CategoryValue.UseCegoryValue)
{
var indexgroups=GroupCategoryHelper.GetGroups();
尝试
{
foreach(组中的GroupCategoryDictionary dGroup.Values)
{
var Group=新组(dGroup.ParentGroupCategory.CategoryID,dGroup.ParentGroupCategory.Name);
组。添加(组);
foreach(dGroup.Values中的变量groupCategory)
{
var category=新的GroupCategory(GroupCategory.CategoryID,GroupCategory.Name);
组.类别.添加(类别);
如果(defaultValue==CategoryValue.UseCategoryValue)
{
category.value=groupCategory.ExtensionData==null
? ""
:groupCategory.ExtensionData;
category.value=category.value==CategoryValue.Excluded.ToString()
?CategoryValue.Excluded.ToString()
:CategoryValue.Ignore.ToString();
}
其他的
{
category.value=defaultValue.ToString();
}
}
}
}
捕获(例外情况除外)
{
掷骰子;
}
}
谢谢你的帮助-感觉很傻;-}
雅培

不确定我是否理解您的措辞,但为什么您希望输出中包含
\u type
成员?将C#对象序列化为JSON只会提供公共属性。(或者你是说它们是敲除或控件所必需的?)它们是敲除所必需的,因为它在对象列表条目上使用foreach。我有另一个简单的asmx测试项目,它返回类型信息。。。不同之处在于,该对象是用填充该对象的子常量声明的。我的矿山是动态建造的。那种
\u类型的
东西是为WCF方法生成的。尝试用WCF属性
[DataContract]
和(或至少)
[KnownType(typeof(ClassNameHere))]
来装饰它们,看看是否有效。以前从未尝试将WCF属性添加到非WCF对象,因此WebApi可能会忽略这些属性。如果做不到这一点,只需在每个类中添加您自己的
\u type
属性即可。我尝试了在js中生成预期字符串和对象的方法。当我尝试对对象ko.applybindings抛出'group'时,它没有定义:我尝试了在js中生成预期字符串和对象的方法。当我尝试将ko.applybindings添加到对象时,它抛出的“group”未定义:
[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;
    }
}