Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.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
Javascript 嵌套JSON字典,其中最后一级可以是标准元素或另一个dict_Javascript_Html_Json_Dictionary_Knockout.js - Fatal编程技术网

Javascript 嵌套JSON字典,其中最后一级可以是标准元素或另一个dict

Javascript 嵌套JSON字典,其中最后一级可以是标准元素或另一个dict,javascript,html,json,dictionary,knockout.js,Javascript,Html,Json,Dictionary,Knockout.js,所以我有一个JSON字典,我可以使用knockout js访问它。对象的结构是一个嵌套字典,但最后一级包含一些标准JSONkey:val对和一些dictkey:{key1:val1,key2:val2},我正在动态访问这些dict以创建嵌套表。我知道这听起来很混乱,但我需要这样做(如果你有更好的想法,可能不会) var虚拟={ “虚拟数据”:{ “dummy1”:{ “dummy1.1”:“val1”, “dummy1.2”:“val2”, “dummy1.3”:“val3” }, “dumm

所以我有一个JSON字典,我可以使用knockout js访问它。对象的结构是一个嵌套字典,但最后一级包含一些标准JSON
key:val
对和一些dict
key:{key1:val1,key2:val2}
,我正在动态访问这些dict以创建嵌套表。我知道这听起来很混乱,但我需要这样做(如果你有更好的想法,可能不会)

var虚拟={
“虚拟数据”:{
“dummy1”:{
“dummy1.1”:“val1”,
“dummy1.2”:“val2”,
“dummy1.3”:“val3”
},
“dummy2”:{
“dummy2.1”:“val1”,
“dummy2.2”:{
“dummy2.2.1”:“val2.1”,
“dummy2.2.2”:“val2.2”
},
“dummy2.3”:“val3”
},
“dummy3”:{
“dummy3.1”:“val1”,
“dummy3.2”:“val2”
}
}
}
函数映射字典数组(字典){
var结果=[];
for(字典中的var键){
if(dictionary.hasOwnProperty(key)){
push({key:key,value:dictionary[key]});
}  
}
返回结果;
}
ko.应用绑定(虚拟)
表格{
字体系列:arial,无衬线;
边界塌陷:塌陷;
宽度:100%;
}
td,th{
边框:1px实心#dddddd;
文本对齐:左对齐;
填充:8px;
}

我不完全确定您想要的结果是什么,但我希望这有助于:

要创建嵌套结构,可以嵌套
模板
绑定。这允许您在视图中创建递归模式

如果您的数据结构已经定义,那么它会有所帮助,因此我还将
mapdictionarray
方法设置为递归。(这样可以确保不必在绑定处理程序中调用函数)

有一个
getTemplate
方法确定
值是“叶”(树中最后一个)还是分支(需要另一个表)

var虚拟={
“虚拟数据”:{
“dummy1”:{
“dummy1.1”:“val1”,
“dummy1.2”:“val2”,
“dummy1.3”:“val3”
},
“dummy2”:{
“dummy2.1”:“val1”,
“dummy2.2”:{
“dummy2.2.1”:“val2.1”,
“dummy2.2.2”:“val2.2”
},
“dummy2.3”:“val3”
},
“dummy3”:{
“dummy3.1”:“val1”,
“dummy3.2”:“val2”
}
}
}
函数映射字典数组(字典){
var结果=[];
for(字典中的var键){
if(dictionary.hasOwnProperty(key)){
var值=字典[键];
结果:推({
钥匙:钥匙,
值:isObj(值)?
mapDictionaryToArray(值):
价值
});
}
}
返回结果;
}
函数isObj(数据){
返回数据。toString()==“[对象]”;
}
函数getTemplate(数据){
返回数组.isArray(数据)?
“t分支”:
“t叶”;
}
ko.applyBindings({
firstObj:mapDictionaryToArray(虚拟)[0],
getTemplate:getTemplate
});
表格{
字体系列:arial,无衬线;
边界塌陷:塌陷;
宽度:100%;
}
运输署,
th{
边框:1px实心#dddddd;
文本对齐:左对齐;
填充:8px;
}
td{
垂直对齐:顶部;
}