1

I have a json dump as

{
  "alarm": [
    {
      "ackId": 16,
      "count": 1,
      "description": "<p>A SSH outage was identified on interface\n      10.21.5.39.</p> <p>A new Outage record has been\n      created and service level availability calculations will be\n      impacted until this outage is resolved.</p>",
      "firstEventTime": 1495277308427,
      "id": 16,
      "ifIndex": null,
      "ipAddress": "10.21.5.39",
      "lastEvent": {
        "createTime": 1495277308437,
        "description": "<p>A SSH outage was identified on interface\n      10.21.5.39.</p> <p>A new Outage record has been\n      created and service level availability calculations will be\n      impacted until this outage is resolved.</p>",
        "display": "Y",
        "host": "opennms",
        "id": 625,
        "ifIndex": null,
        "ipAddress": "10.21.5.39",
        "log": "Y",
        "logMessage": "SSH outage identified on interface 10.21.5.39 with reason code: Connection refused (Connection refused).",
        "nodeId": 9,
        "nodeLabel": "fra01-api-01",
        "parameters": [
          {
            "name": "eventReason",
            "type": "string",
            "value": "Connection refused (Connection refused)"
          }
        ],
        "serviceType": {
          "id": 5,
          "name": "SSH"
        },
        "severity": "MINOR",
        "source": "OpenNMS.Poller.DefaultPollContext",
        "time": 1495277308427,
        "uei": "uei.opennms.org/nodes/nodeLostService"
      },
      "lastEventTime": 1495277308427,
      "logMessage": "SSH outage identified on interface 10.21.5.39 with reason code: Connection refused (Connection refused).",
      "managedObjectInstance": null,
      "managedObjectType": null,
      "nodeId": 9,
      "nodeLabel": "fra01-api-01",
      "ossPrimaryKey": null,
      "parameters": [
        {
          "name": "eventReason",
          "type": "string",
          "value": "Connection refused (Connection refused)"
        }
      ],
      "qosAlarmState": null,
      "reductionKey": "uei.opennms.org/nodes/nodeLostService::9:10.21.5.39:SSH",
      "serviceType": {
        "id": 5,
        "name": "SSH"
      },
      "severity": "MINOR",
      "suppressedTime": 1495277308427,
      "suppressedUntil": 1495277308427,
      "type": 1,
      "uei": "uei.opennms.org/nodes/nodeLostService",
      "x733AlarmType": null,
      "x733ProbableCause": 0
    }
  ],
  "count": 1,
  "offset": null,
  "totalCount": 1
}

I wrote a small code to get some details from the json

def get_nodes_opennms():
    headers={'Accept': 'application/json' }
    x = requests.get('http://localhost:8980/opennms/rest/alarms?comparator=ge&severity=MINOR?limit=0',headers=headers , auth=('admin', 'Op3AD'))
    parsed = json.loads(x.content)
    #print json.dumps(parsed, indent=4, sort_keys=True)
    wriet_me_to_file = json.dumps(parsed, indent=4, sort_keys=True)
    f=open('out.txt', 'w')
    f.write(wriet_me_to_file)
    for i in json.load(open('out.txt'))["alarm"]:
        try:
            print (["ipAddress"])
            print (["logMessage"])
        except Exception as e:
          print "something is wrong"

This is throwing me error :

Traceback (most recent call last): File "python_opennms.py", line 24, in x = get_nodes_opennms() File "python_opennms.py", line 15, in get_nodes_opennms for i in json.load(open('out.txt'))["alarm"]: File "/usr/lib/python2.7/json/init.py", line 291, in load **kw) File "/usr/lib/python2.7/json/init.py", line 339, in loads return _default_decoder.decode(s) File "/usr/lib/python2.7/json/decoder.py", line 364, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode raise ValueError("No JSON object could be decoded") ValueError: No JSON object could be decoded

Can someone help

1 Answer 1

1

You are opening file that is not closed after writing. Probably system did not flush stream buffer to disk completly, so open('out.txt') encountered file with not complete content.

Best and most secure approach would be:

with open('out.txt', 'w') as f:
    f.write(wriet_me_to_file)
for i in json.load(open('out.txt'))["alarm"]:
Sign up to request clarification or add additional context in comments.

2 Comments

okay cool , got it,, but it just returns me ['ipAddress'] ['logMessage']
because you wrote: print (["ipAddress"]) insetad of print( i ["ipAddress"]) That's why variable name i is not good for something else than just list index :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.