On Thu, 28 May 2015 13:32:39 +1000, Cameron Simpson wrote: > On 28May2015 01:38, Jon Ribbens <jon+use...@unequivocal.co.uk> wrote: >>On 2015-05-27, Karthik Sharma <karthik.sha...@gmail.com> wrote: >>> I tried modifying the program as follows as per your >>> suggestion.Doesn't seem to work. >> >>That's because you didn't modify the program as per their suggestion, >>you made completely different changes that bore no relation to what they >>said. > > Actually, his changes looked good to me. He does print from data first, > but only for debugging. Then he goes: > > message = json.loads(data) > > and tried to access message['Message']. > > However I am having trouble reproducing his issue because his quoted > code is incorrect. I've tried to fix it, as listed below, but I don't > know what is really meant to be in the 'data" string.
it looks like data is a broken array of one object, part of which is a further quoted json string. There should be a string value after the isEvent but I have no idea what it should be, nor what else should come after. "message":"tdetails":{att:val pairs} is also wrong in the first level of inner json. I think he wants data[0]['message'], but the inner json strings are broken too, and should look more like. data: "[{\"Severity\":\"warn\",\"Subject\":\"Reporting\",\"Message\": \"tdetails\",\"attr_name\":\"{\\\"Product\\\":\\\"Gecko\\\",\\\"CPUs\\ \":8,\\\"Language\\\":\\\"en-GB\\\",\\\"isEvent\\\":\\\"attr_value\\\"}\"} ]", In this model, if the data attribute is a json string, then data maps to a list / array data[0] maps to an object / dictionary data[0]["Message"] maps to the string literal "tdetails" data[0]["attr_name"] maps to a string representation of a json ob with another level of escaping. That string can then be loaded, eg: attr_name = json.loads(data[0]["attr_name"]) See: http:/www.sined.co.uk/python/nested_json.py.txt -- Denis McMahon, denismfmcma...@gmail.com -- https://mail.python.org/mailman/listinfo/python-list