I recently had to make REST calls in Python for sending data to Azure EventHub.
In this particular case I could not use the Python SDK to talk to EventHub. As I wrote down the code to make the raw REST calls, I came across several gems. Am listing them down below.
Tips:
- Use the python ‘requests’ library.
- i am yet to figure out how to make async calls. can i use this library for async as well or would I have to use something else
- Sending JSON is way to go.
- Don’t even try sending anything else
- Pandas has great functionality to convert Series/DataFrames to JSON.
- the ‘to_json’ function has awesome functionality including orient by ‘records’ etc
- Python has an awesome library called ‘json’ to deal with JSON data.
- To deserialize ,use json.loads()
- In particular, to convert dict to JSON use json.dumps().
- Note: If you want to preserve the order, one would have to use ‘collections.OrderedDict’. Check this link
Check this out:
myj = '[{"reward":30,"actionname":"x","age":60,"gender":"M","weight":150,"Scored Labels":30.9928596354},{"reward":20,"actionname":"y","age":60,"gender":"M","weight":150,"Scored Labels":19.0217225957}]'
myj_l = json.loads(myj, object_pairs_hook=collections.OrderedDict)
myj_l
Out[177]:
[OrderedDict([(u'reward', 30), (u'actionname', u'x'), (u'age', 60), (u'gender', u'M'), (u'weight', 150), (u'Scored Labels', 30.9928596354)]),
OrderedDict([(u'reward', 20), (u'actionname', u'y'), (u'age', 60), (u'gender', u'M'), (u'weight', 150), (u'Scored Labels', 19.0217225957)])]
for item in myj_l:
print json.dumps(item)
{"reward": 30, "actionname": "x", "age": 60, "gender": "M", "weight": 150, "Scored Labels": 30.9928596354}
{"reward": 20, "actionname": "y", "age": 60, "gender": "M", "weight": 150, "Scored Labels": 19.0217225957}
References:
Code: