Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.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重复_Javascript_Html_Json_Angularjs - Fatal编程技术网

Javascript 使用不同的嵌套json重复

Javascript 使用不同的嵌套json重复,javascript,html,json,angularjs,Javascript,Html,Json,Angularjs,因此,我有一个API,它返回一个活动列表,但我必须一次获取两个项目的信息,因此,如果我在第一次调用中有3个项目,那么返回的json将如下所示: cesta{ fecha="14/08/2015 2:42:28 PM", tipo="9", pagina="1", total="3", inst [{ nu_doc_opened="N", nu_doc="14", nu_inst="1", nb_wf{ cdata_sec

因此,我有一个API,它返回一个活动列表,但我必须一次获取两个项目的信息,因此,如果我在第一次调用中有3个项目,那么返回的json将如下所示:

cesta{ 
fecha="14/08/2015 2:42:28 PM",  
tipo="9",  
pagina="1",
total="3",
inst [{ 

    nu_doc_opened="N",  
    nu_doc="14",  
    nu_inst="1",  
    nb_wf{ 
        cdata_section="Gestión calendario específico"
        }
    },
    nu_doc_opened="N",  
    nu_doc="15",  
    nu_inst="2",  
    nb_wf{ 
        cdata_section="Gestión calendario general"
        }
    }]
}
在下一次调用中,返回的json如下

cesta{ 
fecha="14/08/2015 2:42:29 PM",  
tipo="9",  
pagina="2",
total="3",
inst { 
    nu_doc_opened="N",  
    nu_doc="16",  
    nu_inst="1",  
    nb_wf{ 
        cdata_section="Gestión calendario específico"
        }
    }
}
我想通过这个json获取一些数据并将其放在一个表中,所以我尝试像这样使用ng repeat:注意,我只想获取一些值,而不是全部值

$scope.basket= data.cesta.inst;

<tbody>
    <tr ng-repeat="b in basket">
    <td>{{b.nu_doc}}</td>
    <td>{{b.nu_inst}}</td>
    <td>{{b.nb_wf.cdata_section}}</td>
    </tr>  
</tbody>
问题是,当json在'inst'中有2个或更多的对象时(如第一个示例中所示),这是可行的,因为它是一个数组,但当它只有1个对象时,它将不起作用,我该怎么做才能使ng在这两种情况下重复工作?
感谢高级

这是因为在第二种情况下,当迭代对象时,它会得到一个对象,它会得到属性和值,而不是像第一个数组中那样的对象

将该对象包装在数组中,然后它就可以工作了


$scope.basket=angular.isArraydata.cesta.inst?data.cesta.inst:[data.cesta.inst]

这是因为在第二种情况下,它在迭代对象时得到一个对象,它得到的属性和值与第一个数组中的对象不同

将该对象包装在数组中,然后它就可以工作了

$scope.basket=angular.isArraydata.cesta.inst?data.cesta.inst:[data.cesta.inst]

正如您所意识到的,ng repeat需要一个数组。如果即使只有一个数据对象,也无法强制端点始终返回数组,那么您可能需要编写一个黑客解决方案

有一个不切实际的想法:

$scope.basket=data.cest.inst.length!==未定义?data.cest.inst:[data.cest.inst]

我认为您已经了解了这一点,但万一没有,下面是$scope.basket需要成为数组的原因: 简而言之:ng repeat需要一个数组。在第一种情况下,$scope.basket是一个对象数组,但在第二种情况下,它只是一个对象。在第二种情况下,需要将对象放在数组中,即[nu_doc:…}],以便格式一致。注意:只有一个对象的数组是可以的

例如,在第一种情况下,您会得到:

$scope.basket = [{nu_doc: ...}, {nu_doc: ...}]
$scope.basket = {nu_doc: ...}
这与您编写的ng repeat语句配合得很好

但在第二种情况下,你会得到:

$scope.basket = [{nu_doc: ...}, {nu_doc: ...}]
$scope.basket = {nu_doc: ...}
所以ng repeat将循环遍历该对象上的属性,即nu_doc,nu_inst。。。而不是将其视为具有单个对象的数组,这正是您所需要的

因此,JSON的第二部分需要是:

cesta{ 
fecha="14/08/2015 2:42:29 PM",  
tipo="9",  
pagina="2",
total="3",
inst [{ 
    nu_doc_opened="N",  
    nu_doc="16",  
    nu_inst="1",  
    nb_wf{ 
        cdata_section="Gestión calendario específico"
        }
    }
}]
正如您所意识到的,ng repeat需要一个数组。如果即使只有一个数据对象,也无法强制端点始终返回数组,那么您可能需要编写一个黑客解决方案

有一个不切实际的想法:

$scope.basket=data.cest.inst.length!==未定义?data.cest.inst:[data.cest.inst]

我认为您已经了解了这一点,但万一没有,下面是$scope.basket需要成为数组的原因: 简而言之:ng repeat需要一个数组。在第一种情况下,$scope.basket是一个对象数组,但在第二种情况下,它只是一个对象。在第二种情况下,需要将对象放在数组中,即[nu_doc:…}],以便格式一致。注意:只有一个对象的数组是可以的

例如,在第一种情况下,您会得到:

$scope.basket = [{nu_doc: ...}, {nu_doc: ...}]
$scope.basket = {nu_doc: ...}
这与您编写的ng repeat语句配合得很好

但在第二种情况下,你会得到:

$scope.basket = [{nu_doc: ...}, {nu_doc: ...}]
$scope.basket = {nu_doc: ...}
所以ng repeat将循环遍历该对象上的属性,即nu_doc,nu_inst。。。而不是将其视为具有单个对象的数组,这正是您所需要的

因此,JSON的第二部分需要是:

cesta{ 
fecha="14/08/2015 2:42:29 PM",  
tipo="9",  
pagina="2",
total="3",
inst [{ 
    nu_doc_opened="N",  
    nu_doc="16",  
    nu_inst="1",  
    nb_wf{ 
        cdata_section="Gestión calendario específico"
        }
    }
}]

是的,你必须确保你的inst总是一个数组:谢谢!这就是我想要的!是的,你必须确保你的inst总是一个数组:谢谢!这就是我想要的!工作完美