You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解析指定格式的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>");
}

另外提两个小细节:

  1. 操作DOM前先调用empty()清空原有内容,防止多次执行代码时重复添加选项
  2. 你原来的代码里给option的文本加了多余的单引号('"+ obj.name +"'),这会导致选项显示成'Bangalore'而不是Bangalore,修正后的代码已经去掉了这些多余引号

内容的提问来源于stack exchange,提问作者Sarath Hari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:42:57