2010-08-04 104 views
2

我写了json读取器来读取数据&可以正常使用以下数据。如何使用javascript/jquery读取json中的单个对象和数组对象

{"menu": { 
    "id": "file", 
    "value": "File", 
    "popup": { 
    "menuitem": [ 
     {"value": "New", "onclick": "CreateNewDoc()"}, 
     {"value": "Open", "onclick": "OpenDoc()"}, 
     {"value": "Close", "onclick": "CloseDoc()"} 
    ] 
    } 
}} 

但是当JSON返回从API等

{"menu": { 
    "id": "file", 
    "value": "File", 
    "popup": { 
    "menuitem": 
     {"value": "Close", "onclick": "CloseDoc()"} 

    } 
}} 

单个菜单项菜单项是一个对象,而不是阵列。 因此,我的json阅读器无法阅读,因为我正在通过循环读入menuitem的数组。

解决方案非常感谢。 这是怎么处理的其他主要网站?

+0

阅读json之前我可以检查menuitem数组,如果不是我可以将其转换为数组吗?请建议我以快速方式转换的方法 在此先感谢! – jaan 2010-08-04 23:45:52

+0

更改解析器为读者 – jaan 2010-08-04 23:53:35

回答

1

jQuery的makeArray是完美的。
http://api.jquery.com/jQuery.makeArray/

这需要什么,并返回一个数组,所以如果它已经将其传递的,是一个数组,但如果它是一个标量它使一个单值排列出来。然后你可以迭代结果。

+0

我很确定这个问题是重复的,因为我认为我之前发布了这个确切的答案。 – jpsimons 2010-08-05 00:39:02

+0

抱歉,不确定。 我用js数组“push”将对象转换为数组。 – jaan 2010-08-05 01:34:48

0

假设你想要阅读的菜单项的“价值”,你可以使用

if(menuitem.value!=undefined)//this will return undefined if the menu item is an array 

那么其他的就是用menuitem[0].value如果上述条件为假。 希望这可以在一定程度上解决您的问题。