Repository: pydantic/pydantic

Issue:
Incompatibility of deprecated `.json` method not well documented
### Initial Checks

- [X] I confirm that I'm using Pydantic V2

### Description

Previously it was possible to pass the `ensure_ascii=False` argument to the `.json()` method to get JSON in UTF-8 instead of hideously ugly `\uNNN` escapes everywhere.  Now I get this unhelpful error:
```
TypeError: `dumps_kwargs` keyword arguments are no longer supported.
```
The workaround is to switch to the new `model_dump_json` method which seems to output UTF-8 by default, but it would be nice if at least you could document this somewhere.

### Example Code

```Python
from pydantic import BaseModel
class Chose(BaseModel):
    truc: str
fafouin = Chose(truc="Allô! 你好！привет!")
print(fafouin.json(indent=2, ensure_ascii=False))
```


### Python, Pydantic & OS Version

```Text
pydantic version: 2.0.2
        pydantic-core version: 2.1.2 release build profile
                 install path: /home/dhd/work/vdsa/venv/lib/python3.10/site-packages/pydantic
               python version: 3.10.6 (main, May 29 2023, 11:10:38) [GCC 11.3.0]
                     platform: Linux-5.19.0-46-generic-x86_64-with-glibc2.35
     optional deps. installed: ['typing-extensions']
```


Selected Assignee: @samuelcolvin


Discussion:
For what it's worth, in v2, `ensure_ascii` seems to be false by default:
```python
from pydantic import BaseModel
class Chose(BaseModel):
    truc: str
fafouin = Chose(truc="Allô! 你好！привет!")
print(fafouin.model_dump_json(indent=2))
"""
{
  "truc": "Allô! 你好！привет!"
}
"""
```

We no longer use python's `json.dumps` to dump the JSON values, which is why the same arguments are no longer supported. Considering this now appears to be handled the way you wanted, are there other related issues that are _not_ handled properly for you?
Ah! You're right - I was confused about which version of Pydantic was actually installed in my venv.

On the other hand, the documentation is misleading, because `.json()` is a bit more than deprecated - frequently used arguments like `indent` and `ensure_ascii` now simply crash your program.  And this is not mentioned in the documentation,

So I guess there are two solutions:

1. Update the migration guide to make clear that you can't pass any arguments to `.json()` anymore
2. Make sure `bump-pydantic` will update code to use `.model_dump_json()` instead of just crashing
I agree, this should be mentioned somewhere in the documentation or part of the warning even.
Killed my day.

Resolving patch:
diff --git a/pydantic/main.py b/pydantic/main.py
--- a/pydantic/main.py
+++ b/pydantic/main.py
@@ -1406,7 +1406,9 @@ def create_model(  # noqa: C901
     __slots__: tuple[str, ...] | None = None,
     **field_definitions: Any,
 ) -> type[Model]:
-    """Dynamically creates and returns a new Pydantic model, in other words, `create_model` dynamically creates a
+    """Usage docs: https://docs.pydantic.dev/2.6/concepts/models/#dynamic-model-creation
+
+    Dynamically creates and returns a new Pydantic model, in other words, `create_model` dynamically creates a
     subclass of [`BaseModel`][pydantic.BaseModel].
 
     Args:
@@ -1417,7 +1419,7 @@ def create_model(  # noqa: C901
         __module__: The name of the module that the model belongs to;
             if `None`, the value is taken from `sys._getframe(1)`
         __validators__: A dictionary of methods that validate fields.
-        __cls_kwargs__: A dictionary of keyword arguments for class creation.
+        __cls_kwargs__: A dictionary of keyword arguments for class creation, such as `metaclass`.
         __slots__: Deprecated. Should not be passed to `create_model`.
         **field_definitions: Attributes of the new model. They should be passed in the format:
             `<name>=(<type>, <default value>)` or `<name>=(<type>, <FieldInfo>)`.


Test patch: