【问题标题】:JSON iteration using jquery使用 jquery 的 JSON 迭代
【发布时间】:2019-01-23 06:35:57
【问题描述】:

我通过 ajax 调用了 rest api,我从 api 以 json 格式获取响应,现在我想在我的网页上显示数据。 我想显示如下

scheduled
driver_count:
passenger_count:

active
driver_count:
passenger_count:

我的代码如下

$(document).ready(function() {
        $.ajax({
            asyn: true,
            crossDomain: true,
            url: "http://10.26.32.11/api/rating-service/rate/current/gettrips",
            dataType: 'JSON',
            callback: 'callback',
            type: 'GET',
            success: function(data) {
                var jso = parseJSON(data);
                console.log(jso);                    

            }
        });

    });

JSON 回复

{
"scheduled": {
    "driver_count": 1,
    "passenger_count": 1
},
"active": {
    "driver_count": 0,
    "passenger_count": 0
}

}

【问题讨论】:

  • 然后只需创建一些 html 节点,例如 <p> - 给节点一个 id,或者以某种方式获取 html 页面的特定节点。 developer.mozilla.org/en-US/docs/Web/API/Document/… - 然后使用 javascript 设置内部文本。在加载中。如果您从 Web 服务器提供数据,则可以即时构建 hmtl,然后提供它
  • 那么具体的问题或疑问是什么?
  • 您能帮我在跨度或任何 html 元素中显示计划和活动计数吗
  • 它显示错误“Uncaught SyntaxError: Unexpected token o in JSON at position 1”

标签: jquery json rest api


【解决方案1】:

您可以按照以下方式访问您的变量

jso.active.driver_count // will print out your value

【讨论】:

  • 如何使用,请提供样品
【解决方案2】:

这里:

// jsonreplay is the string of json you got from the server
var obj = JSON.parse(jsonreplay)
// in javascript you can use for loop to iterate properties
for(var propertyName in obj){
   console.log(propertyName+":");
   for(var internalPropertyName in obj[propertyName]){
      console.log(internalPropertyName + ":"+obj[propertyName][internalPropertyName]);
   }
}

【讨论】:

  • 如果重播 JSON 结构不变,您可以使用@Dalli 给您的答案。
  • 有点明白,请解释
  • 我怎样才能在我的代码中危及到只有从响应中得到否定
【解决方案3】:

如果这个api不是你自己做的,可以循环对象

var jsobj = {
            "scheduled": {
                            "driver_count": 1,
                            "passenger_count": 1
                         },
            "active":    {
                         "driver_count": 0,
                         "passenger_count": 0
                         }
            };

for (var key in jsobj) {
    if (jsobj.hasOwnProperty(key)) {
        console.log(key); //scheduled, active
        var d_cnt = jsobj[key]['driver_count'];
        var p_cnt = jsobj[key]['passenger_count'];
    }
}    

但如果你可以编辑 api 输出脚本,这种结构会让生活更轻松:

var objList = [{
            "type" : "scheduled", 
            "driver_count": 1,
            "passenger_count": 1
          },{
            "type": "active",
            "driver_count": 0,
            "passenger_count": 0
          }];

【讨论】:

    【解决方案4】:

    您可以使用 value 创建新变量作为 key_count 并使用该变量

    obj = {
    "scheduled": {
        "driver_count": 1,
        "passenger_count": 1
    },
    "active": {
        "driver_count": 0,
        "passenger_count": 0
    }}
    makeFlatModel(obj);
    console.log(obj);
    
    function makeFlatModel(jsonObject){
    	var sum=0;
    	for(var propertyName in jsonObject){
    		if(typeof jsonObject[propertyName] =='object'){
    			jsonObject[propertyName+"_count"] = makeFlatModel(jsonObject[propertyName]);
    		}else{
    			sum+= jsonObject[propertyName];
    		}
    	} 
      return sum;
    
    }

    输出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      • 2011-01-16
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      相关资源
      最近更新 更多