首页 > 解决方案 > 如何访问此 JSON 字符串中的某些值?

问题描述

这是我的 JSON 输出。这是来自 API 的响应。我需要访问到达时间。我发现在 Javsacript 和 Jquery 中成功执行此操作的唯一方法是这样做是否有更简单的方法来访问这些数据?

JSON输出:

{
    "routes": [
        {
            "id": "f8b5d90a-d2b5-4149-b058-087c27e52fd0",
            "sections": [
                {
                    "id": "c16d58b7-7e2a-4ded-b8b7-96972d4ab0e4",
                    "type": "vehicle",
                    "departure": {
                        "time": "2021-03-02T18:00:00+10:00",
                        "place": {
                            "type": "place",
                            "location": {
                                "lat": -27.4526753,
                                "lng": 153.0426484
                            },
                            "originalLocation": {
                                "lat": -27.45263,
                                "lng": 153.0423499
                            }
                        }
                    },
                    "arrival": {
                        "time": "2021-03-02T18:09:48+10:00",
                        "place": {
                            "type": "place",
                            "location": {
                                "lat": -27.4396845,
                                "lng": 153.0693942
                            },
                            "originalLocation": {
                                "lat": -27.4397501,
                                "lng": 153.06963
                            }
                        }
                    },
                    "transport": {
                        "mode": "car"
                    }
                }
            ]
        }
    ]
}

var totalTime
data = {
    "routes": [
        {
            "id": "f8b5d90a-d2b5-4149-b058-087c27e52fd0",
            "sections": [
                {
                    "id": "c16d58b7-7e2a-4ded-b8b7-96972d4ab0e4",
                    "type": "vehicle",
                    "departure": {
                        "time": "2021-03-02T18:00:00+10:00",
                        "place": {
                            "type": "place",
                            "location": {
                                "lat": -27.4526753,
                                "lng": 153.0426484
                            },
                            "originalLocation": {
                                "lat": -27.45263,
                                "lng": 153.0423499
                            }
                        }
                    },
                    "arrival": {
                        "time": "2021-03-02T18:09:48+10:00",
                        "place": {
                            "type": "place",
                            "location": {
                                "lat": -27.4396845,
                                "lng": 153.0693942
                            },
                            "originalLocation": {
                                "lat": -27.4397501,
                                "lng": 153.06963
                            }
                        }
                    },
                    "transport": {
                        "mode": "car"
                    }
                }
            ]
        }
    ]
}
$.each(data, function(i,value){
totalTime = value[0]['sections']['0']['arrival']['time'];
});
$('#results').text(totalTime);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label id = "results"></label>

标签: javascriptjqueryjson

解决方案


你不需要$.each()。只需使用data.routes.

这个硬编码[0]索引假定您感兴趣的时间总是在第一条路线的第一部分。

data = {
  "routes": [{
    "id": "f8b5d90a-d2b5-4149-b058-087c27e52fd0",
    "sections": [{
      "id": "c16d58b7-7e2a-4ded-b8b7-96972d4ab0e4",
      "type": "vehicle",
      "departure": {
        "time": "2021-03-02T18:00:00+10:00",
        "place": {
          "type": "place",
          "location": {
            "lat": -27.4526753,
            "lng": 153.0426484
          },
          "originalLocation": {
            "lat": -27.45263,
            "lng": 153.0423499
          }
        }
      },
      "arrival": {
        "time": "2021-03-02T18:09:48+10:00",
        "place": {
          "type": "place",
          "location": {
            "lat": -27.4396845,
            "lng": 153.0693942
          },
          "originalLocation": {
            "lat": -27.4397501,
            "lng": 153.06963
          }
        }
      },
      "transport": {
        "mode": "car"
      }
    }]
  }]
}

var totalTime = data.routes[0].sections[0].arrival.time;

$('#results').text(totalTime);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label id="results"></label>


推荐阅读