Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python JSON数组列表中特定于Grep的对象值_Python_Arrays_Json_Parsing_Perl_Shell - Fatal编程技术网

Python JSON数组列表中特定于Grep的对象值

Python JSON数组列表中特定于Grep的对象值,python,arrays,json,parsing,perl,shell,Python,Arrays,Json,Parsing,Perl,Shell,我有下面的JSON响应数组列表。需要从中提取特定服务角色的jvirtualMachineId键的值。如何获取一个元素的数组值。例如,我如何获取jvirtualMachineId的元素值,它在服务角色中包含分析数据库。谢谢你的帮助 [ { "dataCenterId": 1, "customerInstallationId": 27355, "addressBlockId": 535, "cloudHostId": 31614

我有下面的JSON响应数组列表。需要从中提取特定服务角色的jvirtualMachineId键的值。如何获取一个元素的数组值。例如,我如何获取jvirtualMachineId的元素值,它在服务角色中包含分析数据库。谢谢你的帮助

[
    {
        "dataCenterId": 1,
        "customerInstallationId": 27355,
        "addressBlockId": 535,
        "cloudHostId": 31614,
        "hostname": "-94-t-jd-am",
        "ipAddresses": [
            {
                "machineAddressId": 65097,
                "addressRangeType": "NORMAL",
                "address": "103.191.23.20"
            },
            {
                "machineAddressId": 65098,
                "addressRangeType": "NFS",
                "address": "103.191.87.20"
            }
        ],
        "machineState": "RUNNING",
        "machineType": "THUNDER",
        "standbyVirtualMachineId": -1,
        "serviceRoles": [
            "ANALYTICS_DB",
            "SBS_DB"
        ],
        "hazduPen": false,
        "jHost": {
            "cloudHostId": 31614,
            "hostName": "d.dy.com",
            "ipAddress": "103.191.23.20",
            "shortHostname": "12-25-94-ad"
        },
        "jvirtualMachineId": 32551,
        "shortHostname": "-25-94-jd-ad"
    },
    {
        "dataCenterId": 1,
        "customerInstallationId": 27355,
        "addressBlockId": 535,
        "cloudHostId": 31613,
        "hostname": "ea01fdgdf.com",
        "ipAddresses": [
            {
                "machineAddressId": 65095,
                "addressRangeType": "NORMAL",
                "address": "103.191.23.19"
            },
            {
                "machineAddressId": 65096,
                "addressRangeType": "NFS",
                "address": "103.191.87.19"
            }
        ],
        "machineState": "RUNNING",
        "machineType": "THUNDER",
        "standbyVirtualMachineId": -1,
        "serviceRoles": [
            "EAE_SERVICE"
        ],
        "hazduPen": false,
        "jHost": {
            "cloudHostId": 31613,
            "hostName": ".dynjcdfgintom",
            "ipAddress": "103.191.23.19",
            "shortHostname": "-25-94-ser"
        },
        "jvirtualMachineId": 32550,
        "shortHostname": "esrsf-ea01"
    },
    {
        "dataCenterId": 1,
        "customerInstallationId": 27355,
        "addressBlockId": 535,
        "cloudHostId": 31612,
        "hostname": "25-94-t-csom",
        "ipAddresses": [
            {
                "machineAddressId": 65093,
                "addressRangeType": "NORMAL",
                "address": "103.191.23.18"
            },
            {
                "machineAddressId": 65094,
                "addressRangeType": "NFS",
                "address": "103.191.87.18"
            }
        ],
        "machineState": "RUNNING",
        "machineType": "THUNDER",
        "standbyVirtualMachineId": -1,
        "serviceRoles": [
            "CACHE"
        ],
        "hazduPen": false,
        "jiveHost": {
            "cloudHostId": 31612,
            "hostName": "sdfsdf4-t-cs01ted.com",
            "ipAddress": "103.191.23.18",
            "shortHostname": "sdfsdf25-94-t-cs01"
        },
        "jvirtualMachineId": 32549,
        "shortHostname": "12-25-94-t-cs01"
    }
]

您还没有告诉我们需要使用什么编程语言,所以我假设任何语言都可以

通常,如果任何工具都可以,我会尝试用bash解决简单的问题。幸运的是,有一个工具可以使您指定的任务变得简单:!以下是您需要做的:

cat data.json | jq '.[].serviceRoles="ANALYTICS_DB"|.[].jvirtualMachineId'

您提供的JSON实际上不是格式良好的,所以我尝试在字里行间读一读:您需要一个对象数组。我可能猜错了,在这种情况下,您可能需要稍微摆弄一下jq访问器。

PHP类似于:

$element = what element you want to retrieve;

//fetching the file:

$jsonArray = json_decode(file_get_contents("content/coordinaten.json"));

echo 'value: '.$jsonArray[$element];

or in your specific question:

echo 'value: '.$jsonArray["jvirtualMachineId"];
在下列情况下使用:

输出:
您的编程语言是什么???将JSON解析为地图/列表或您的语言支持的任何内容,并浏览该树。然后转到JSON.org学习JSON语法。学习只需要5-10分钟,如果你不理解它,你会完全不知所措。pythonOP说:“它在服务角色中包含分析数据库”,它返回3个整数
perl -MJSON -0ne '
    my $DS = decode_json $_;
    foreach my $h (@{ $DS }) {
        print $h->{jvirtualMachineId}
            if grep { /ANALYTICS_DB/ } @{ $h->{serviceRoles} };
    }
' file.json
32551