﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
33086	"ArrayField with UUIDField raises error on serialization with ""django.core.serializers.json"""	Anudeep Samaiya	Anudeep Samaiya	"The encoder is not supported currently, which causes the serialization of uuid fields missing.

'''Current Implementation:'''
{{{#!python
def value_to_string(self, obj):
    values = []
    vals = self.value_from_object(obj)
    base_field = self.base_field

    for val in vals:
        if val is None:
            values.append(None)
        else:
            obj = AttributeSetter(base_field.attname, val)
            values.append(base_field.value_to_string(obj))
    return json.dumps(values)
}}}

'''Suggested Implementation:'''
{{{#!python
def value_to_string(self, obj, encoder=DjangoJSONEncoder):
    values = []
    vals = self.value_from_object(obj)
    base_field = self.base_field

    for val in vals:
        if val is None:
            values.append(None)
        else:
            obj = AttributeSetter(base_field.attname, val)
            values.append(base_field.value_to_string(obj))
    return json.dumps(values, cls=encoder)
}}}

**How to reproduce:**

{{{#!python
import uuid
from django.contrib.postgres.fields import ArrayField, JSONField
from django.core.serializers.json import DjangoJSONEncoder

class Test(models.Model):
    uuid = models.UUIDField(unique=True, default=uuid.uuid4, editable=False)
    data = ArrayField(
        JSONField(encoder=DjangoJSONEncoder),
        max_length=200,
        blank=True,
        default=list,
    )
}}}

**Now to test do the following:**

{{{#!python
from decimal import Decimal
from django.core import serializers
from test.models import Test

test = Test(data=[{'threshold_amount_usd': Decimal('0'), 'taint_percent_threshold': Decimal('0')}])
serializers.serialize(""json"", (test,))

test = Test(data=[{'id': uuid4()}])
serializers.serialize(""json"", (test,))
}}}"	Bug	new	contrib.postgres	3.2	Normal		postgres, json	Anudeep Samaiya	Unreviewed	1	1	1	1	1	0
