Repository: PrefectHQ/prefect

Issue:
JSON needs escapes for passing params in prefect run cloud 
## Description
If I try to run a flow using the CLI and add params using the example in the help section (from calling prefect run cloud -h) I get an error message.  For example:
`prefect run cloud -n Params-New -p Jenny -ps {"c":3}`
Gives the following error:
_json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)_

If I enter the params as a string with an escape round other speechmarks, it works:
For example:
`prefect run cloud -n Params-New -p Jenny -ps "{\"c\":3}"`
works fine
## Expected Behavior
<!-- What did you expect to happen instead? -->
Best case scenario: 
`prefect run cloud -n Params-New -p Jenny -ps {"c":3}` works fine. 
Second best:
We update the docs to show an example with correct JSON formatting. 




## Reproduction
`prefect run cloud -n FLOWNAME -p PROJECT -ps {"c":3}`




## Environment
<!-- Any additional information about your environment

Optionally run `prefect diagnostics` from the command line and paste the information here. -->



Discussion:
@zhen0 - if you put your parameters within single ticks it will work as you expect:
```
prefect run cloud -n FLOWNAME -p PROJECT -ps '{"c":3}'
```
you can even include spaces!
```
prefect run cloud -n FLOWNAME -p PROJECT -ps '{"c" : 3}'
```

I'll update the example documentation to clarify this point.

Resolving patch:
diff --git a/src/prefect/cli/run.py b/src/prefect/cli/run.py
--- a/src/prefect/cli/run.py
+++ b/src/prefect/cli/run.py
@@ -23,7 +23,7 @@ def run():
 
     \b
     Examples:
-        $ prefect run flow --name Test-Flow --project My-Project
+        $ prefect run flow --name Test-Flow --project My-Project -ps '{"my_param": 42}'
         Flow Run: https://cloud.prefect.io/myslug/flow-run/2ba3rrfd-411c-4d99-bb2a-f64a6dea78f9
 
     \b
@@ -94,7 +94,9 @@ def flow(
         --version, -v               INTEGER     A flow version to run
         --parameters-file, -pf      FILE PATH   A filepath of a JSON file containing
                                                 parameters
-        --parameters-string, -ps    TEXT        A string of JSON parameters
+        --parameters-string, -ps    TEXT        A string of JSON parameters (note: to ensure these are
+                                                parsed correctly, it is best to include the full payload
+                                                within single quotes)
         --run-name, -rn             TEXT        A name to assign for this run
         --watch, -w                             Watch current state of the flow run, stream
                                                 output to stdout
@@ -112,6 +114,11 @@ def flow(
     File contains:  {"a": 1, "b": 2}
     String:         '{"a": 3}'
     Parameters passed to the flow run: {"a": 3, "b": 2}
+
+    \b
+    Example:
+        $ prefect run flow -n "Test-Flow" -p "My Project" -ps '{"my_param": 42}'
+        Flow Run: https://cloud.prefect.io/myslug/flow-run/2ba3rrfd-411c-4d99-bb2a-f64a6dea78f9
     """
     return _run_flow(
         name=name,
@@ -188,7 +195,9 @@ def cloud(
                                                 the flow [required]
         --version, -v               INTEGER     A flow version to run
         --parameters-file, -pf      FILE PATH   A filepath of a JSON file containing parameters
-        --parameters-string, -ps    TEXT        A string of JSON parameters
+        --parameters-string, -ps    TEXT        A string of JSON parameters (note: to ensure these are
+                                                parsed correctly, it is best to include the full payload
+                                                within single quotes)
         --run-name, -rn             TEXT        A name to assign for this run
         --watch, -w                             Watch current state of the flow run, stream
                                                 output to stdout


Test patch: