skip to Main Content

First, I am new to Python and working with JSON.
I am trying to extract just one value from an API request response, and I am having a difficult time parsing out the data I need.
I have done a lot of searching on how to do this, but most all the examples use a string or file that is formatted is much more basic than what I am getting.
I understand the key – value pair concept but I am unsure how to reference the key-value I want. I think it has something to do with the response having multiple objects having the same kay names. Or maybe the first line "Bookmark" is making things goofy.
The value I want is for the model name in the response example below.
That’s all I need from this. Any help would be greatly appreciated.

{
  "Bookmark": "<B><P><p>SerNum</p><p>Item</p></P><D><f>false</f><f>false</f></D><F><v>1101666</v><v>ADDMASTER IJ7102-23E</v></F><L><v>123456</v><v>Model Name</v></L></B>",
  "Items": [
    [
      {
        "Name": "SerNum",
        "Value": "123456"
      },
      {
        "Name": "Item",
        "Value": "Model Name"
      },
      {
        "Name": "_ItemId",
        "Value": "PBT=[unit] unt.DT=[2021-07-28 08:20:33.513] unt.ID=[eae2621d-3e9f-4515-9763-55e67f65fae6]"
      }
    ]
  ],
  "Message": "Success",
  "MessageCode": 0
}

2

Answers


  1. If you want to find value of dictionary with key 'Name' and value 'Item' you can do:

    import json
    
    with open('your_data.json', 'r') as f_in:
        data = json.load(f_in)
    
    model_name = next((i['Value'] for lst in data['Items'] for i in lst if i['Name'] == 'Item'), 'Model name not found.')
    print(model_name)
    

    Prints:

    Model Name
    

    Note: if the dictionary is not found string 'Model name not found.' is returned

    Login or Signup to reply.
  2. First, load the JSON into a python dict:

    import json
    
    x = '''{
      "Bookmark": "<B><P><p>SerNum</p><p>Item</p></P><D><f>false</f><f>false</f></D><F><v>1101666</v><v>ADDMASTER IJ7102-23E</v></F><L><v>123456</v><v>Model Name</v></L></B>",
      "Items": [
        [
          {
            "Name": "SerNum",
            "Value": "123456"
          },
          {
            "Name": "Item",
            "Value": "Model Name"
          },
          {
            "Name": "_ItemId",
            "Value": "PBT=[unit] unt.DT=[2021-07-28 08:20:33.513] unt.ID=[eae2621d-3e9f-4515-9763-55e67f65fae6]"
          }
        ]
      ],
      "Message": "Success",
      "MessageCode": 0
    }'''
    
    # parse x:
    y = json.loads(x)
    
    # The result is a Python dictionary. 
    

    Now if you want the value ‘Model Name’, you would do:

    print(y['Items'][0][1]['Value'])
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search