如果我有如下列表:
<ul class="nameList"> <li value="1">Bob</li> <li value="2">Frank</li> <li value="3">Sally</li> </ul>
如何将其转换为json对象,如下所示:@H_301_5@
[{“id”:”1″,”title”:”Bob”},
{“id”:”2″,”title”:”Frank”},
{“id”:”3″,”title”:”Frank”}]@H_301_5@
解决方法
jQuery实际上有内置的东西来构建数组:
map()
var items = $('.nameList').find('li').map(function() { var item = { }; item.id = this.value; item.title = $(this).text(); return item; });
这将构建一个与您之后的JSON结构匹配的对象数组.然后,对于JSON序列化,使用JSON.stringify,它包含在较新的浏览器中,可用于包含json2.js的旧版浏览器:@H_301_5@
// Produces [{'id':1,'title':'bob'},{etc},{etc}] var json = JSON.stringify(items);
另请注意,$.post()会自动序列化对象数据参数,因为key1 = value1& key2 = value2& etc.除非您在服务器端严格需要JSON,否则可能不需要JSON序列化步骤.@H_301_5@