需要从API获取名称,节点名称和阶段值

问题描述 投票:2回答:1

我试图使用JavaScript从JSON数据获取名称,节点名称和阶段值。这是我的JavaScript

<script>
    $(document).ready(function () {
            $.getJSON('http://ec2-3-82-117-70.compute-1.amazonaws.com:8080/api/v0/retrievePodStatus/default',
            function (data) {
              console.log(data)

             document.body.append("Name: " + data.items[1].metadata.name);
                // document.body.append(data.items[1].metadata.name);
                // document.body.append(data.items[0].spec.nodeName);
            });
    });


</script>

我刚刚在这里得到了这个名字。有人可以帮我如何获取名称,节点名称和阶段值?找到下面的JSON。

"apiVersion": "v1",
"items": [
    {
        "apiVersion": "v1",
        "kind": "Pod",
        "metadata": {
            "annotations": {
                "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container external-dns"
            },
            "creationTimestamp": "2019-02-28T16:22:49Z",
            "generateName": "external-dns-5d69b66646-",
            "labels": {
                "app": "external-dns",
                "pod-template-hash": "1825622202"
            },
            "name": "external-dns-5d69b66646-pmxmd",
            "namespace": "default",
            "ownerReferences": [
                {
                    "apiVersion": "extensions/v1beta1",
                    "blockOwnerDeletion": true,
                    "controller": true,
                    "kind": "ReplicaSet",
                    "name": "external-dns-5d69b66646",
                    "uid": "170d9260-3b75-11e9-abe2-0ec5819342ce"
                }
            ],
            "resourceVersion": "2984",
            "selfLink": "/api/v1/namespaces/default/pods/external-dns-5d69b66646-pmxmd",
            "uid": "170e1a0d-3b75-11e9-abe2-0ec5819342ce"
        },
        "spec": {
            "containers": [
                {
                    "args": [
                        "--source=service",
                        "--source=ingress",
                        "--provider=aws",
                        "--registry=txt",
                        "--txt-owner-id=qpair"
                    ],
                    "image": "registry.opensource.zalan.do/teapot/external-dns:v0.4.2",
                    "imagePullPolicy": "IfNotPresent",
                    "name": "external-dns",
                    "resources": {
                        "requests": {
                            "cpu": "100m"
                        }
                    },
                    "terminationMessagePath": "/dev/termination-log",
                    "terminationMessagePolicy": "File",
                    "volumeMounts": [
                        {
                            "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount",
                            "name": "default-token-rr546",
                            "readOnly": true
                        }
                    ]
                }
            ],
            "dnsPolicy": "ClusterFirst",
            "nodeName": "ip-172-20-39-147.ec2.internal",
            "restartPolicy": "Always",
            "schedulerName": "default-scheduler",
            "securityContext": {},
            "serviceAccount": "default",
            "serviceAccountName": "default",
            "terminationGracePeriodSeconds": 30,
            "tolerations": [
                {
                    "effect": "NoExecute",
                    "key": "node.kubernetes.io/not-ready",
                    "operator": "Exists",
                    "tolerationSeconds": 300
                },
                {
                    "effect": "NoExecute",
                    "key": "node.kubernetes.io/unreachable",
                    "operator": "Exists",
                    "tolerationSeconds": 300
                }
            ],
            "volumes": [
                {
                    "name": "default-token-rr546",
                    "secret": {
                        "defaultMode": 420,
                        "secretName": "default-token-rr546"
                    }
                }
            ]
        },
        "status": {
            "conditions": [
                {
                    "lastProbeTime": null,
                    "lastTransitionTime": "2019-02-28T16:22:49Z",
                    "status": "True",
                    "type": "Initialized"
                },
                {
                    "lastProbeTime": null,
                    "lastTransitionTime": "2019-02-28T16:22:58Z",
                    "status": "True",
                    "type": "Ready"
                },
                {
                    "lastProbeTime": null,
                    "lastTransitionTime": "2019-02-28T16:22:49Z",
                    "status": "True",
                    "type": "PodScheduled"
                }
            ],
            "containerStatuses": [
                {
                    "containerID": "docker://18b96317cf360d562fb3f849c6716c50a41a67a4dbc126164020531e1e4d84a9",
                    "image": "registry.opensource.zalan.do/teapot/external-dns:v0.4.2",
                    "imageID": "docker-pullable://registry.opensource.zalan.do/teapot/external-dns@sha256:d54b9eb8948b87eb7fcd938990ff2dbc9ca0a42d9c5d36fcaa75c7cf066f7995",
                    "lastState": {},
                    "name": "external-dns",
                    "ready": true,
                    "restartCount": 0,
                    "state": {
                        "running": {
                            "startedAt": "2019-02-28T16:22:57Z"
                        }
                    }
                }
            ],
            "hostIP": "172.20.39.147",
            "phase": "Running",
            "podIP": "100.96.7.3",
            "qosClass": "Burstable",
            "startTime": "2019-02-28T16:22:49Z"
        }
    },

我刚刚在这里得到了这个名字。有人可以帮我如何获取名称,节点名称和阶段值?找到下面的JSON。

谢谢,非常赞赏

javascript jquery
1个回答
1
投票

您接近发布的代码。你只需要items[0]而不是items[1]。请记住,数组的第一个元素始终为0.除此之外,它就像检查打开和关闭括号[]{}一样简单,以查看每个嵌套对象/数组的开始和结束位置。

码:

var name = data.items[0].metadata.name
var nodeName = data.items[0].spec.nodeName
var phase = data.items[0].status.phase

片段:

var data = {
  "apiVersion": "v1",
  "items": [{
    "apiVersion": "v1",
    "kind": "Pod",
    "metadata": {
      "annotations": {
        "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container external-dns"
      },
      "creationTimestamp": "2019-02-28T16:22:49Z",
      "generateName": "external-dns-5d69b66646-",
      "labels": {
        "app": "external-dns",
        "pod-template-hash": "1825622202"
      },
      "name": "external-dns-5d69b66646-pmxmd",
      "namespace": "default",
      "ownerReferences": [{
        "apiVersion": "extensions/v1beta1",
        "blockOwnerDeletion": true,
        "controller": true,
        "kind": "ReplicaSet",
        "name": "external-dns-5d69b66646",
        "uid": "170d9260-3b75-11e9-abe2-0ec5819342ce"
      }],
      "resourceVersion": "2984",
      "selfLink": "/api/v1/namespaces/default/pods/external-dns-5d69b66646-pmxmd",
      "uid": "170e1a0d-3b75-11e9-abe2-0ec5819342ce"
    },
    "spec": {
      "containers": [{
        "args": [
          "--source=service",
          "--source=ingress",
          "--provider=aws",
          "--registry=txt",
          "--txt-owner-id=qpair"
        ],
        "image": "registry.opensource.zalan.do/teapot/external-dns:v0.4.2",
        "imagePullPolicy": "IfNotPresent",
        "name": "external-dns",
        "resources": {
          "requests": {
            "cpu": "100m"
          }
        },
        "terminationMessagePath": "/dev/termination-log",
        "terminationMessagePolicy": "File",
        "volumeMounts": [{
          "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount",
          "name": "default-token-rr546",
          "readOnly": true
        }]
      }],
      "dnsPolicy": "ClusterFirst",
      "nodeName": "ip-172-20-39-147.ec2.internal",
      "restartPolicy": "Always",
      "schedulerName": "default-scheduler",
      "securityContext": {},
      "serviceAccount": "default",
      "serviceAccountName": "default",
      "terminationGracePeriodSeconds": 30,
      "tolerations": [{
          "effect": "NoExecute",
          "key": "node.kubernetes.io/not-ready",
          "operator": "Exists",
          "tolerationSeconds": 300
        },
        {
          "effect": "NoExecute",
          "key": "node.kubernetes.io/unreachable",
          "operator": "Exists",
          "tolerationSeconds": 300
        }
      ],
      "volumes": [{
        "name": "default-token-rr546",
        "secret": {
          "defaultMode": 420,
          "secretName": "default-token-rr546"
        }
      }]
    },
    "status": {
      "conditions": [{
          "lastProbeTime": null,
          "lastTransitionTime": "2019-02-28T16:22:49Z",
          "status": "True",
          "type": "Initialized"
        },
        {
          "lastProbeTime": null,
          "lastTransitionTime": "2019-02-28T16:22:58Z",
          "status": "True",
          "type": "Ready"
        },
        {
          "lastProbeTime": null,
          "lastTransitionTime": "2019-02-28T16:22:49Z",
          "status": "True",
          "type": "PodScheduled"
        }
      ],
      "containerStatuses": [{
        "containerID": "docker://18b96317cf360d562fb3f849c6716c50a41a67a4dbc126164020531e1e4d84a9",
        "image": "registry.opensource.zalan.do/teapot/external-dns:v0.4.2",
        "imageID": "docker-pullable://registry.opensource.zalan.do/teapot/external-dns@sha256:d54b9eb8948b87eb7fcd938990ff2dbc9ca0a42d9c5d36fcaa75c7cf066f7995",
        "lastState": {},
        "name": "external-dns",
        "ready": true,
        "restartCount": 0,
        "state": {
          "running": {
            "startedAt": "2019-02-28T16:22:57Z"
          }
        }
      }],
      "hostIP": "172.20.39.147",
      "phase": "Running",
      "podIP": "100.96.7.3",
      "qosClass": "Burstable",
      "startTime": "2019-02-28T16:22:49Z"
    }
  }],

}

var name = data.items[0].metadata.name
var nodeName = data.items[0].spec.nodeName
var phase = data.items[0].status.phase
console.log(name)
console.log(nodeName)
console.log(phase)
© www.soinside.com 2019 - 2024. All rights reserved.