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

Javascript 需要从API获取名称、节点名称和阶段值,javascript,jquery,Javascript,Jquery,我试图使用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) {

我试图使用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"
        }
    },

谢谢,非常感谢

您发布的代码。您只需要
项[0]
,而不是
项[1]
。记住数组的第一个元素总是0。除此之外,只需检查打开和关闭括号
[]
{}
即可查看每个嵌套对象/数组的开始和结束位置

代码:

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

var数据={
“apiVersion”:“v1”,
“项目”:[{
“apiVersion”:“v1”,
“种类”:“豆荚”,
“元数据”:{
“注释”:{
“kubernetes.io/limit-ranger”:“LimitRanger插件集:容器外部dns的cpu请求”
},
“creationTimestamp”:“2019-02-28816:22:49Z”,
“generateName”:“external-dns-5d69b66646-”,
“标签”:{
“应用程序”:“外部dns”,
“pod模板哈希”:“1825622202”
},
“名称”:“external-dns-5d69b66646-pmxmd”,
“名称空间”:“默认值”,
“ownerReferences”:[{
“apiVersion”:“扩展/v1beta1”,
“Blockownerdelement”:没错,
“控制员”:对,
“种类”:“复制集”,
“名称”:“external-dns-5d69b66646”,
“uid”:“170d9260-3b75-11e9-abe2-0ec5819342ce”
}],
“资源版本”:“2984”,
“selfLink”:“/api/v1/namespace/default/pods/external-dns-5d69b66646-pmxmd”,
“uid”:“170e1a0d-3b75-11e9-abe2-0ec5819342ce”
},
“规格”:{
“容器”:[{
“args”:[
“--源=服务”,
“--源=入口”,
“--provider=aws”,
“--registry=txt”,
“--txt所有者id=qpair”
],
“image”:“registry.opensource.zalan.do/teapot/externaldns:v0.4.2”,
“imagePullPolicy”:“如果不存在”,
“名称”:“外部dns”,
“资源”:{
“请求”:{
“cpu”:“100m”
}
},
“terminationMessagePath”:“/dev/终止日志”,
“terminationMessagePolicy”:“文件”,
“卷数”:[{
“mountPath”:“/var/run/secrets/kubernetes.io/serviceaccount”,
“名称”:“default-token-rr546”,
“只读”:真
}]
}],
“dnsPolicy”:“ClusterFirst”,
“节点名称”:“ip-172-20-39-147.ec2.内部”,
“重新启动策略”:“始终”,
“schedulerName”:“默认计划程序”,
“securityContext”:{},
“serviceAccount”:“默认值”,
“serviceAccountName”:“默认值”,
“terminationGracePeriodSeconds”:30,
“容忍”:[{
“效果”:“不执行”,
“键”:“node.kubernetes.io/未准备就绪”,
“操作员”:“存在”,
“容忍秒”:300
},
{
“效果”:“不执行”,
“key”:“node.kubernetes.io/unreachable”,
“操作员”:“存在”,
“容忍秒”:300
}
],
“卷”:[{
“名称”:“default-token-rr546”,
“秘密”:{
“默认模式”:420,
“secretName”:“default-token-rr546”
}
}]
},
“地位”:{
“条件”:[{
“lastProbeTime”:空,
“lastTransitionTime”:“2019-02-28T16:22:49Z”,
“状态”:“正确”,
“类型”:“已初始化”
},
{
“lastProbeTime”:空,
“lastTransitionTime”:“2019-02-28T16:22:58Z”,
“状态”:“正确”,
“类型”:“就绪”
},
{
“lastProbeTime”:空,
“lastTransitionTime”:“2019-02-28T16:22:49Z”,
“状态”:“正确”,
“类型”:“播客计划”
}
],
“集装箱状态”:[{
“集装箱运输”:docker://18b96317cf360d562fb3f849c6716c50a41a67a4dbc126164020531e1e4d84a9",
“image”:“registry.opensource.zalan.do/teapot/externaldns:v0.4.2”,
“imageID”:“docker”-pullable://registry.opensource.zalan.do/teapot/external-dns@sha256:d54b9eb8948b87eb7fcd938990ff2dbc9ca0a42d9c5d36fcaa75c7cf066f7995“,
“lastState”:{},
“名称”:“外部dns”,
“准备好了”:是的,
“重新计数”:0,
“国家”:{
“跑步”:{
“开始时间”:“2019-02-28T16:22:57Z”
}
}
}],
“hostIP”:“172.20.39.147”,
“阶段”:“运行”,
“podIP”:“100.96.7.3”,
“qosClass”:“Burstable”,
“开始时间”:“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(名称)
console.log(节点名)

console.log(阶段)
您好,谢谢您的解决方案。我如何通过循环从这个JSON中获取数组值?不太清楚你在问什么。您正在尝试循环通过哪个阵列?大多数嵌套数组只有一个元素,这是一个巨大的嵌套对象。这对于返回的json对象来说是相当标准的,因此通常不需要循环。如果您想循环执行类似于容差数组(它有两个元素,都是嵌套对象)的操作,您可以对(var i=0;i执行类似的操作,它将为您提供容差下的每个对象。否则你能澄清一下吗?