@mrarmyant - So I know this thread is a bit dated since you asked but I was browsing and was where you were at (issue with getting strings to Azure IoT). Looking back at my notes, this is how I did it:
I would have saved myself some time and frustration if I simply searched the Particle forum first for my issue before trying 20 different things through brute force. Turns out this is a known issue with how Particle assembles it’s JSON before sending to Azure and instead of the standard integration, I need to make a “custom integration” as outlined here: How to pass unescaped JSON to Azure IoTHub?
Basically, I can setup a Custom JSON in Particle to unpack the JSON within the JSON in Particle before sending it over to Azure. Prior to this I used the “default” checkbox which packs the JSON into a JSON. With custom, I can now send it over as a single JSON array.
Also, I’m still learning this world of IoT but after plating with Azure IoT Hub, Streaming Analytics, Events Hub, etc. I personally found it easiest to send it as a webhook to an Azure Function app. (Basically an endpoint to process the webhook). I’m sure there are many different ways to send data to Azure but I really like the ability to customize the webbook as it’s written in Python. So I can do anything I want with the data before sending to a database. It also was very easy to send a response back to the webhook and then get the data from that response to my device by having the device (boron) subscribe to it. Anyhow, I saw the post in random browsing so figured I’d give you my perspective even if it is a few months old.