如何编写嵌套的多维json对象
我正在研究json,我想知道这是否是编写嵌套的多维json对象的正确方法。我写道:
var foo = { "logged_in":true, "town":"Dublin", "state":"Ohio", "country":"USA", "products":2, "0":{ "pic_id":"1500", "description":"Picture of a computer", "localion":"img.cloudimages.us/2012/06/02/computer.jpg", "type":"jpg", "childrenimages":2 "0":{ "pic_id":"15011", "description":"Picture of a cpu", "localion":"img.cloudimages.us/2012/06/02/mycpu.png", "type":"png" } "1":{ "pic_id":"15012", "description":"Picture of a cpu two", "localion":"img.cloudimages.us/2012/06/02/thiscpu.png", "type":"png" } }, "1":{ "pic_id":"1501", "description":"Picture of a cpu", "localion":"img.cloudimages.us/2012/06/02/cpu.png", "type":"png" } };
如果我的对象变得太嵌套了,我应该遵循这个约定吗?
考虑使用数组而不是数字对象。
json中的数组使用[] http://www.json.org/定义
这是一个例子:
var foo = { "logged_in":true, "town":"Dublin", "state":"Ohio", "country":"USA", "products": [ { "pic_id":"1500", "description":"Picture of a computer", "localion":"img.cloudimages.us/2012/06/02/computer.jpg", "type":"jpg", "childrenimages": [ { "pic_id":"15011", "description":"Picture of a cpu", "localion":"img.cloudimages.us/2012/06/02/mycpu.png", "type":"png" }, { "pic_id":"15012", "description":"Picture of a cpu two", "localion":"img.cloudimages.us/2012/06/02/thiscpu.png", "type":"png" } ] }, { "pic_id":"1501", "description":"Picture of a cpu", "localion":"img.cloudimages.us/2012/06/02/cpu.png", "type":"png" } ], };
(请原谅我,如果我忘了关闭{或[或者,很难在SO中输入代码:p)
这样你甚至不需要有类似的计数
"products":2,
要么
"childrenimages":2
你干脆做
foo.products.length
要么
foo.products[0].childrenimages.length
祝好运 :)
这是您的数据的正确格式(注意我自己更改了一些数据)
{ "logged_in":true, "town":"Dublin", "state":"Ohio", "country":"USA", "products":2, "productinfo":[ { "0":{ "pic_id":"1500", "description":"Picture of a computer", "localion":"img.cloudimages.us/2012/06/02/computer.jpg", "type":"jpg", "childrenimages":2 }, "1":{ "pic_id":"15011", "description":"Picture of a cpu", "localion":"img.cloudimages.us/2012/06/02/mycpu.png", "type":"png" }, "2":{ "pic_id":"15012", "description":"Picture of a cpu two", "localion":"img.cloudimages.us/2012/06/02/thiscpu.png", "type":"png" }, "3":{ "pic_id":"1501", "description":"Picture of a cpu", "localion":"img.cloudimages.us/2012/06/02/cpu.png", "type":"png" } } ] }
那实际上并不是你在那里的数组,它只是一个包含属性的对象。 你也缺少一些逗号,所以这甚至都不会编译。
在这种情况下,对您来说更方便的是使用数组和对象来形成您的JSON。 例如:
var this_json_string = { "state":"Ohio", "country":"USA", "products":[ { "pic_id":"1500", "description":"Picture of a computer", }, { "pic_id":"15011", "description":"Picture of a cpu" }, { "pic_id":"15012", "description":"Picture of a cpu two" }, { "pic_id":"1501", "description":"Picture of a cpu" } ] };
不要写JSON。 说真的,除了简单的配置文件外,不要编写JSON。
您可以使用实用程序将对象转换为大多数语言的JSON字符串(如果不是)。
PHP: json_encode($array);
Javascript: JSON.stringify( obj );
等等。
手动编写JSON通常会导致语法错误。 在您看到缺少逗号或w / e之前,会让您头疼的那种。 你有很好的工具来做到这一点,使用它们。 您可以与XML进行比较,但是当您输入时,JSON没有工具(IDE,文本编辑器)说“这种语法错误”。 例如,没有编辑器会告诉您使用单引号而不是双引号。
只是不要写JSON。