Commit 3e34005b authored by Claude Paroz's avatar Claude Paroz
Browse files

Fixed #13182 -- Prevented trailing spaces in indented json output

Thanks Stéphane Raimbault for the report and the initial patch.
parent 9885f077
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -31,6 +31,9 @@ class Serializer(PythonSerializer):
        self.json_kwargs = self.options.copy()
        self.json_kwargs.pop('stream', None)
        self.json_kwargs.pop('fields', None)
        if self.options.get('indent'):
            # Prevent trailing spaces
            self.json_kwargs['separators'] = (',', ': ')
        self.stream.write("[")

    def end_serialization(self):
+25 −0
Original line number Diff line number Diff line
@@ -392,6 +392,31 @@ class JsonSerializerTestCase(SerializersTestBase, TestCase):
                ret_list.append(obj_dict["fields"][field_name])
        return ret_list

    def test_indentation_whitespace(self):
        Score.objects.create(score=5.0)
        Score.objects.create(score=6.0)
        qset = Score.objects.all()

        s = serializers.json.Serializer()
        self.assertEqual(s.serialize(qset, indent=2), """[
{
  "pk": 1,
  "model": "serializers.score",
  "fields": {
    "score": 5.0
  }
},
{
  "pk": 2,
  "model": "serializers.score",
  "fields": {
    "score": 6.0
  }
}
]
""")


class JsonSerializerTransactionTestCase(SerializersTransactionTestBase, TransactionTestCase):
    serializer_name = "json"
    fwd_ref_str = """[