Best way to communicate user details from app to device over GATT?

Hi everyone, this is more of a programming advice question: basically we have a "registration app" associated with our BLE product which will be used to communicate user details to the device during intial product registration/activation and the app team is strongly suggesting me to accept JSON data. Something like this:

{
    "userFirstName": "John",
    "userLastName": "Doe",
    "phoneNumber": "7889001234",
    "pinNumber": "1234"
}

I have a few questions:
1. In the past whenever I've had to exchange data over BLE, I would use the Nordic UART service (NUS) because the libraries provided some very convenient functions. For this application, should I do the same and then use some kind of JSON parser to extract the field parameters? Or is there a better way to do this - like some kind of BLE service that caters to this particular use case specifically?

2. I know that GATT is restricted to 31 bytes of data per packet, so is the payload size something I should consider tweaking ?

If you have had to exchange medium-large sized data such as this before reliably, what was your approach? I am still in the process of learning BLE best practices and trying to put them into practice. So any advice is welcome. Thank you!

Related