diff --git a/.editorconfig b/.editorconfig index e43144c4c8..f5a029187c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -18,11 +18,6 @@ max_line_length = 88 [*.html] indent_size = 2 -# The JSON files contain newlines inconsistently -[*.json] -indent_size = 2 -insert_final_newline = ignore - [**/admin/js/vendor/**] indent_style = ignore indent_size = ignore diff --git a/django/core/serializers/json.py b/django/core/serializers/json.py index 7683368e62..b955939e0d 100644 --- a/django/core/serializers/json.py +++ b/django/core/serializers/json.py @@ -39,8 +39,7 @@ class Serializer(PythonSerializer): if self.options.get("indent"): self.stream.write("\n") self.stream.write("]") - if self.options.get("indent"): - self.stream.write("\n") + self.stream.write("\n") def end_object(self, obj): # self._current has the field data diff --git a/docs/releases/6.0.txt b/docs/releases/6.0.txt index f767e46269..9e74856664 100644 --- a/docs/releases/6.0.txt +++ b/docs/releases/6.0.txt @@ -293,7 +293,8 @@ of each library are the first to add or confirm compatibility with Python 3.12: Miscellaneous ------------- -* ... +* The :ref:`JSON ` serializer now writes a newline + at the end of the output, even without the ``indent`` option set. .. _deprecated-features-6.0: diff --git a/tests/fixtures/fixtures/db_fixture_1.default.json b/tests/fixtures/fixtures/db_fixture_1.default.json index 9bb39e400f..ff2aac8c1b 100644 --- a/tests/fixtures/fixtures/db_fixture_1.default.json +++ b/tests/fixtures/fixtures/db_fixture_1.default.json @@ -7,4 +7,4 @@ "pub_date": "2006-06-16 14:00:00" } } -] \ No newline at end of file +] diff --git a/tests/fixtures/fixtures/db_fixture_3.nosuchdb.json b/tests/fixtures/fixtures/db_fixture_3.nosuchdb.json index 3da326bce1..b8ad42c955 100644 --- a/tests/fixtures/fixtures/db_fixture_3.nosuchdb.json +++ b/tests/fixtures/fixtures/db_fixture_3.nosuchdb.json @@ -7,4 +7,4 @@ "pub_date": "2006-06-16 14:00:00" } } -] \ No newline at end of file +] diff --git a/tests/fixtures/fixtures/fixture1.json b/tests/fixtures/fixtures/fixture1.json index 332feaef77..239439ef12 100644 --- a/tests/fixtures/fixtures/fixture1.json +++ b/tests/fixtures/fixtures/fixture1.json @@ -31,4 +31,4 @@ "title": "News Stories" } } -] \ No newline at end of file +] diff --git a/tests/fixtures/fixtures/fixture2.json b/tests/fixtures/fixtures/fixture2.json index a697448327..8ce4259fb4 100644 --- a/tests/fixtures/fixtures/fixture2.json +++ b/tests/fixtures/fixtures/fixture2.json @@ -15,4 +15,4 @@ "pub_date": "2006-06-16 15:00:00" } } -] \ No newline at end of file +] diff --git a/tests/fixtures_regress/fixtures/absolute.json b/tests/fixtures_regress/fixtures/absolute.json index bdf889d333..d62ac03fff 100644 --- a/tests/fixtures_regress/fixtures/absolute.json +++ b/tests/fixtures_regress/fixtures/absolute.json @@ -6,4 +6,4 @@ "name": "Load Absolute Path Test" } } -] \ No newline at end of file +] diff --git a/tests/fixtures_regress/fixtures/big-fixture.json b/tests/fixtures_regress/fixtures/big-fixture.json index 41bd33c6b5..8dbedaecda 100644 --- a/tests/fixtures_regress/fixtures/big-fixture.json +++ b/tests/fixtures_regress/fixtures/big-fixture.json @@ -80,4 +80,4 @@ "channels": [6] } } -] \ No newline at end of file +] diff --git a/tests/fixtures_regress/fixtures/empty.json b/tests/fixtures_regress/fixtures/empty.json index 0637a088a0..fe51488c70 100644 --- a/tests/fixtures_regress/fixtures/empty.json +++ b/tests/fixtures_regress/fixtures/empty.json @@ -1 +1 @@ -[] \ No newline at end of file +[] diff --git a/tests/fixtures_regress/fixtures/forward_ref.json b/tests/fixtures_regress/fixtures/forward_ref.json index 237b076243..87550986e9 100644 --- a/tests/fixtures_regress/fixtures/forward_ref.json +++ b/tests/fixtures_regress/fixtures/forward_ref.json @@ -14,4 +14,4 @@ "name": "Neal Stephenson" } } -] \ No newline at end of file +] diff --git a/tests/fixtures_regress/fixtures/forward_ref_bad_data.json b/tests/fixtures_regress/fixtures/forward_ref_bad_data.json index 3a3fb64360..1972a84afe 100644 --- a/tests/fixtures_regress/fixtures/forward_ref_bad_data.json +++ b/tests/fixtures_regress/fixtures/forward_ref_bad_data.json @@ -14,4 +14,4 @@ "name": "Neal Stephenson" } } -] \ No newline at end of file +] diff --git a/tests/fixtures_regress/fixtures/non_natural_1.json b/tests/fixtures_regress/fixtures/non_natural_1.json index 4bce792e35..af90d0e52c 100644 --- a/tests/fixtures_regress/fixtures/non_natural_1.json +++ b/tests/fixtures_regress/fixtures/non_natural_1.json @@ -22,4 +22,4 @@ "stores": [11] } } -] \ No newline at end of file +] diff --git a/tests/fixtures_regress/fixtures/sequence.json b/tests/fixtures_regress/fixtures/sequence.json index c45ea9420c..0333e00a5e 100644 --- a/tests/fixtures_regress/fixtures/sequence.json +++ b/tests/fixtures_regress/fixtures/sequence.json @@ -9,4 +9,4 @@ "weight": 1.2 } } -] \ No newline at end of file +] diff --git a/tests/gis_tests/geogapp/fixtures/initial.json b/tests/gis_tests/geogapp/fixtures/initial.json index f0f0374d47..58b5d9a4a0 100644 --- a/tests/gis_tests/geogapp/fixtures/initial.json +++ b/tests/gis_tests/geogapp/fixtures/initial.json @@ -95,4 +95,4 @@ "poly" : "POLYGON ((-95.447918 29.727275, -95.447418 29.71003, -95.446918 29.69013, -95.454318 29.68893, -95.475819 29.68903, -95.475819 29.69113, -95.484419 29.69103, -95.484519 29.69903, -95.480419 29.70133, -95.480419 29.69833, -95.474119 29.69833, -95.474119 29.70453, -95.472719 29.71283, -95.468019 29.71293, -95.468219 29.720229, -95.464018 29.720229, -95.464118 29.724529, -95.463018 29.725929, -95.459818 29.726129, -95.459918 29.720329, -95.451418 29.720429, -95.451775 29.726303, -95.451318 29.727029, -95.447918 29.727275))" } } -] \ No newline at end of file +] diff --git a/tests/m2m_through_regress/fixtures/m2m_through.json b/tests/m2m_through_regress/fixtures/m2m_through.json index 6f24886f02..e13ee050c6 100644 --- a/tests/m2m_through_regress/fixtures/m2m_through.json +++ b/tests/m2m_through_regress/fixtures/m2m_through.json @@ -31,4 +31,4 @@ "price": "100" } } -] \ No newline at end of file +] diff --git a/tests/multiple_database/fixtures/multidb-common.json b/tests/multiple_database/fixtures/multidb-common.json index 33134173b9..044cbd99b0 100644 --- a/tests/multiple_database/fixtures/multidb-common.json +++ b/tests/multiple_database/fixtures/multidb-common.json @@ -7,4 +7,4 @@ "published": "2009-7-8" } } -] \ No newline at end of file +] diff --git a/tests/multiple_database/fixtures/multidb.other.json b/tests/multiple_database/fixtures/multidb.other.json index c64f490201..5f1435f740 100644 --- a/tests/multiple_database/fixtures/multidb.other.json +++ b/tests/multiple_database/fixtures/multidb.other.json @@ -23,4 +23,4 @@ "editor": ["Chris Mills"] } } -] \ No newline at end of file +] diff --git a/tests/multiple_database/fixtures/pets.json b/tests/multiple_database/fixtures/pets.json index 89756a3e5b..5691975c02 100644 --- a/tests/multiple_database/fixtures/pets.json +++ b/tests/multiple_database/fixtures/pets.json @@ -15,4 +15,4 @@ "owner": 2 } } -] \ No newline at end of file +] diff --git a/tests/proxy_models/fixtures/mypeople.json b/tests/proxy_models/fixtures/mypeople.json index d20c8f2a6e..5d656f6717 100644 --- a/tests/proxy_models/fixtures/mypeople.json +++ b/tests/proxy_models/fixtures/mypeople.json @@ -6,4 +6,4 @@ "name": "Elvis Presley" } } -] \ No newline at end of file +] diff --git a/tests/serializers/tests.py b/tests/serializers/tests.py index 9e6bb762c9..04d6b4e9ee 100644 --- a/tests/serializers/tests.py +++ b/tests/serializers/tests.py @@ -489,7 +489,8 @@ class SerializerAPITests(SimpleTestCase): self.assertIs(serializer.stream_class, File) self.assertIsInstance(serializer.stream, File) self.assertEqual( - data, '[{"model": "serializers.score", "pk": 1, "fields": {"score": 3.4}}]' + data, + '[{"model": "serializers.score", "pk": 1, "fields": {"score": 3.4}}]\n', ) diff --git a/tests/servers/fixtures/testdata.json b/tests/servers/fixtures/testdata.json index d81b2253d2..7fba0215fd 100644 --- a/tests/servers/fixtures/testdata.json +++ b/tests/servers/fixtures/testdata.json @@ -13,4 +13,4 @@ "name": "robert" } } -] \ No newline at end of file +]