如何浏览 json
How can i navigate through the json?
我在一个对象中有一些JSON,但我似乎可以返回json样本的值如下。
{
"rootLayout":"main",
"layoutDescriptions":[
{
"id":"main",
"container" : {
"type":"Tabs",
"content":[
{
"type":"Panel",
"label":"Simple Address",
"layout":"SimpleForm",
"comment":"This form is simple name value pairs",
"content":[
{ "type":"label", "constraint":"newline", "text":"Org Name" },
{ "type":"text", "property":"propOne" },
{ "type":"label", "constraint":"newline", "text":"Address" },
{ "type":"text", "property":"addrLine1" },
{ "type":"text", "property":"addrLine2" },
{ "type":"text", "property":"addrLine3" },
{ "type":"label", "constraint":"newline", "text":"Postcode" },
{ "type":"text", "property":"postcode" }
]
},
我正在尝试使用
obj[0].rootLayout.id
这也不起作用,我想知道如何访问内容元素。
我是 json 的新手,我认为我被扔进了深渊。我在互联网上找不到任何好的阅读材料,任何人都可以推荐一些。
谢谢。
一些解释,因为你似乎不理解JSON。
它并不像人们想象的那么复杂。它实际上表示javascript对象,就好像它们是由代码编写的一样。
因此,如果您将 JSON 编写为:
{
id : 100,
name: "Yeah baby"
}
这意味着您的对象有两个属性:id
和 name
。第一个是数字,第二个是字符串。
在您的示例中,您可以看到您的对象有两个属性:rootLayout
和 layoutDescriptions
。第一个jsonObj.rootLayout
是字符串,将返回"main"
第二个是数组:
layoutDescriptions: [ {...}, {...},... ]
显然是一个对象数组,因为数组元素括在大括号中。您在示例中提供的这个特定的数组元素对象具有自己的属性,就像我为顶级对象解释的那样:id
(字符串)、container
(另一个对象,因为它再次括在卷曲中)等......
我希望你对JSON表示法有更多的了解。
那么让我们去回答你的问题
您可以通过通过以下方式访问id
:
jsonObj.layoutDescriptions[0].id
并进一步访问您的内容对象:
var contentObjects = jsonObj.layoutDescriptions[0].container.content[0].content;
for(var i = 0; i < contentObjects.length, i++)
{
// assign this inner object to a variable for simpler property access
var contObj = contentObjects[i];
// do with this object whatever you need to and access properties as
// contObj.type
// contObj.property
// contObj.text
// contObj.constraint
}
请注意,这只会枚举第一个内容对象的内容对象...如果这是有道理的...看看你的JSON对象,你会发现你有嵌套的对象内容数组。
对象是一个对象,而不是数组,并且它没有一个名为 0
的属性。
要获得rootLayout
:
obj.rootLayout
但是,rootLayout
是一个字符串,而不是一个对象。它没有id
.layoutDescriptions
数组中的第一项执行。
obj.layoutDescriptions[0].id
您是否想获得id
等于obj.rootLayout
的layoutDescriptions
之一?
var targetLayout = {};
for(var i = 0; i < obj.layoutDescriptions.length; i++) {
if(obj.layoutDescriptions[i].id == obj.rootLayout) {
targetLayout = obj.layoutDescriptions[i]; break;
}
}
console.log(targetLayout);
- jQuery匹配JSON对象的部分文本
- 在循环中分配json值时,值被覆盖
- 需要帮助设置json数组
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 使用JQuery解析JSON嵌套数组
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 如何使用json将对象列表从java转换为javascript
- 如何使用 node.js 比较两个 json 数组
- 如何将JSON数据导入我的ejs模板
- 区分JSON中的矩阵和列表列表
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何浏览 json
- 如何循环浏览JSON列表
- 浏览包含package.json的文件夹时,Browserify会覆盖自己的配置
- 浏览JSON和绘制圆圈;我不能使用谷歌地图
- 使用jQuery循环浏览twitter搜索JSON
- 浏览json嵌套文件