I think I understand...
Like I said earlier, the simplest way would be to keep your local data in an array. You can get the entire array as a json string by using the array.asjson expression. Send that to the server for storage.
Retrieve the array.asjson from the server, and use the array load action to get it back into an array, to append and modify as you wish.
There's no reason you need to convert the array into key:value pairs unless I'm totally missing something, like you needing to modify or access it with a third party program that can't handle json arrays for some reason.
The other option would be to use the json object actions to set each path, object, and value, then send json.tocompactstring to the server. Then you can retrieve it and use the json parse action to load it up and be able to modify it again.
I'd think the array method is cleaner/easier though.
Edit: I can put together an example using local storage as the "server" later if you need.