summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Carrick <tom@carrick.eu>2025-03-11 08:01:06 +0100
committerGitHub <noreply@github.com>2025-03-11 08:01:06 +0100
commit8df5ce80d26824ce72af41edc03275d435de9432 (patch)
treeab7ee353b9c3d48ae447be31b8d2c19215856d0b
parentab148c02cedbac492f29930dcd5346e1af052635 (diff)
Fixed #36177 -- Added a trailing newline to JSON serializer. (#19232)
-rw-r--r--.editorconfig5
-rw-r--r--django/core/serializers/json.py3
-rw-r--r--docs/releases/6.0.txt3
-rw-r--r--tests/fixtures/fixtures/db_fixture_1.default.json2
-rw-r--r--tests/fixtures/fixtures/db_fixture_3.nosuchdb.json2
-rw-r--r--tests/fixtures/fixtures/fixture1.json2
-rw-r--r--tests/fixtures/fixtures/fixture2.json2
-rw-r--r--tests/fixtures_regress/fixtures/absolute.json2
-rw-r--r--tests/fixtures_regress/fixtures/big-fixture.json2
-rw-r--r--tests/fixtures_regress/fixtures/empty.json2
-rw-r--r--tests/fixtures_regress/fixtures/forward_ref.json2
-rw-r--r--tests/fixtures_regress/fixtures/forward_ref_bad_data.json2
-rw-r--r--tests/fixtures_regress/fixtures/non_natural_1.json2
-rw-r--r--tests/fixtures_regress/fixtures/sequence.json2
-rw-r--r--tests/gis_tests/geogapp/fixtures/initial.json2
-rw-r--r--tests/m2m_through_regress/fixtures/m2m_through.json2
-rw-r--r--tests/multiple_database/fixtures/multidb-common.json2
-rw-r--r--tests/multiple_database/fixtures/multidb.other.json2
-rw-r--r--tests/multiple_database/fixtures/pets.json2
-rw-r--r--tests/proxy_models/fixtures/mypeople.json2
-rw-r--r--tests/serializers/tests.py3
-rw-r--r--tests/servers/fixtures/testdata.json2
22 files changed, 23 insertions, 27 deletions
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 <serialization-formats-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
+]