Home > Net >  Extracting a value in python with specific JSON array
Extracting a value in python with specific JSON array

Time:06-30

New to python how would I get the value out of the key value pair appid in the below JSON?

  {
   "Datadog":[
      "host:i-068fee2324438213477be9a4"
   ],
   "Amazon Web Services":[
      "availability-zone:us-east-1a",
      "aws:cloudformation:logical-id:ec2instance01",
      "aws:cloudformation:stack-id:arn:aws:cloudformation:us-east-1:353245",
      "appid:42928482474dh28424a",
      "name:devinstance",
      "region:us-east-1",
      "security-group:sg-022442414d8a",
      "security-group:sg-0691af18875ad9d0b",
      "security-group:sg-022442414d8a",
      "security-group:sg-022442414d8a"
   ]
}

CodePudding user response:

What you're using is a dictionnary. You can access the values like this

nameOfYourDict["nameOfYourKey"]

For example if the name of your dict is data and you want to access Datadog :

data["Datadog"]

CodePudding user response:

Start by getting the AWS pairs into their own variable:

aws_pairs = data["Amazon Web Services"]

Then loop over the pairs until you find one with the correct anchor:

appid_pair = None
for pair in aws_pairs:
    if pair.startswith("appid:"):
        appid_pair = pair
        break

appid_value = None
if appid_pair:
    appid_value = appid_pair.split(":", 1)[1]

print(appid_value)

Breaking this down into a simple next statement:

aws_pairs = data["Amazon Web Services"]
appid_value = next(
    (
        pair.split(":", 1)[1]
        for pair in aws_pairs 
        if pair.startswith("appid:")
    ),
    None
)

print(appid_value)

CodePudding user response:

It's not really a JSON thing, you have a dictionary of lists so extract the relevant list then search it for the item you're looking for:

x = {
   "Datadog":[
      "host:i-068fee2324438213477be9a4"
   ],
   "Amazon Web Services":[
      "availability-zone:us-east-1a",
      "aws:cloudformation:logical-id:ec2instance01",
      "aws:cloudformation:stack-id:arn:aws:cloudformation:us-east-1:353245",
      "appid:42928482474dh28424a",
      "name:devinstance",
      "region:us-east-1",
      "security-group:sg-022442414d8a",
      "security-group:sg-0691af18875ad9d0b",
      "security-group:sg-022442414d8a",
      "security-group:sg-022442414d8a"
   ]
}

aws = x["Amazon Web Services"]
for string in aws:
    name, value = string.split(":", 1)
    if name == "appid":
        print(value)

Gives:

42928482474dh28424a
  • Related