如何解析指定格式的JSON?现有代码无输出求解决
解决JSON数组解析无输出的问题
你的问题出在对JSON结构的理解上——你拿到的JSON是一个数组(包含多个对象的列表),但你的代码把它当成了单个对象来处理,直接访问obj.id自然找不到对应属性,所以没有输出。
先明确你的JSON结构:
[{"id":"1","name":"Bangalore"},{"id":"3","name":"Mysore"}]
解析后得到的obj是一个长度为2的数组,每个元素才是包含id和name的对象。
下面是修正后的代码,用jQuery的遍历方法来处理数组:
var obj = jQuery.parseJSON(response); // 先清空目标元素的原有内容,避免重复添加 $("#state").empty(); $("#state").next().next().empty(); // 遍历数组中的每一个对象 $.each(obj, function(index, item) { // 给select标签添加option选项 $("#state").append("<option value='" + item.id + "'>" + item.name + "</option>"); // 给对应的下拉列表添加li项 $("#state").next().next().append("<li rel='" + item.id + "'>" + item.name + "</li>"); });
如果你习惯用原生JS的循环,也可以这样写:
var obj = jQuery.parseJSON(response); $("#state").empty(); $("#state").next().next().empty(); for (var i = 0; i < obj.length; i++) { var item = obj[i]; $("#state").append("<option value='" + item.id + "'>" + item.name + "</option>"); $("#state").next().next().append("<li rel='" + item.id + "'>" + item.name + "</li>"); }
另外提两个小细节:
- 操作DOM前先调用
empty()清空原有内容,防止多次执行代码时重复添加选项 - 你原来的代码里给
option的文本加了多余的单引号('"+ obj.name +"'),这会导致选项显示成'Bangalore'而不是Bangalore,修正后的代码已经去掉了这些多余引号
内容的提问来源于stack exchange,提问作者Sarath Hari
相关产品推荐
相关产品推荐

