2016-04-07 26 views
0

我有一个PHP API这个对象:获取从JSON对象中的数据在JavaScript

[Object { span=1, caption="Particular", master=true}, 
Object { span=5, caption="Loan Class 1"}, 
Object { span=5, caption="Loan Class 2"}, 
Object { span=5, caption="Loan Class 3"}] 

所需的输出将是:

## Particular Loan Class 1 Loan Class 2 Loan Class 3 ## 

我试着这样做:

var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData; 
for (var index in arrData[0]) { 
row += index + ',';} 
row = row.slice(0, -1); 
CSV += row + '\r\n'; 

什么样的csv看起来像

## span caption master ## 

请帮助如何获得标题值,如果有一个脚本,将在Excel中输出这个,因为需要添加一些列的合并。

+1

向我们展示JSON,而不是print_r输出。 –

回答

1

您应该遍历整个数组,而不仅仅是arrData[0]中的对象。而且你不应该使用for (index in object),它只是将index设置为键,而不是值。然后要访问标题,请使用.caption

for (var i = 0; i < arrData.length; i++) { 
    row += arrData[i].caption + ','; 
} 
+0

只是因为我对这个json和javascript的东西很陌生。一直在做PHP,但是没有必要做前端编码的框架。谢谢@barmar正是我所需要的。 – bluerain25

0

对于标题部分可以使用此:

var row = arrData.map(function(element) { 
    return element.caption; 
}).join(' '); 

.map用于提取数组中的所有元素的标题值。结果数组值与.join连接。您可以将分隔符指定为.join函数的参数。

以Excel文件格式写入任何内容都不是微不足道的。除非你想要CSV格式的结果(你的代码示例所暗示的)。为此,你可能想看看这个answer

+0

是的,根据与客户的讨论,他们使用csv很好,但如果我们可以在excel中执行,我们可以按照样本中的格式进行更好的处理。正如你所看到的那样,对象中存在“跨度”。 span是该特定标题的列数 – bluerain25