Fix parameter convertion for JSON array or object in LCM API payload

This patch for Ansible server can dump the JSON array or object in LCM API
payload to a correct format of string, and the string can be reloaded
to array or object.

Change-Id: Ia5a5844ecaa3869acaeabd695afd41c113e63690
Issue-ID: CCSDK-2144
Signed-off-by: Enbo Wang <wangenbo@huawei.com>
diff --git a/ansible-server/src/main/ansible-server/RestServer.py b/ansible-server/src/main/ansible-server/RestServer.py
index 483b832..3f42bfe 100755
--- a/ansible-server/src/main/ansible-server/RestServer.py
+++ b/ansible-server/src/main/ansible-server/RestServer.py
@@ -329,6 +329,13 @@
     cherrypy.log("Request Decode: EnvParameters    " + json.dumps(EnvParameters))
     cherrypy.log("Request Decode: PlaybookName     " + PlaybookName)
 
+    for key in EnvParameters:
+        value = EnvParameters[key]
+        if isinstance(value, (list, dict)):
+            valueStr = json.dumps(value)
+            # Need to dump two times to keep the backslash and double quotes, add backslash and single quotes for spaces
+            EnvParameters[key] = "\\'" + json.dumps(valueStr)[1:-1] + "\\'"
+
     str_uuid = str(uuid.uuid4())
 
     HomeDir = os.path.dirname(os.path.realpath("~/"))