Skip to content

JSONField(binary=True) represents using binary strings, which JSONRenderer does not support. #4185

Description

@nikmolnar

Checklist

  • I have verified that that issue exists against the master branch of Django REST framework.
  • I have searched for similar issues in both open and closed tickets and cannot find a duplicate.
  • This is not a usage question. (Those should be directed to the discussion group instead.)
  • This cannot be dealt with as a third party library. (We prefer new functionality to be in the form of third party libraries where possible.)
  • I have reduced the issue to the simplest possible case.
  • I have included a failing test as a pull request. (If you are unable to do so we can still accept the issue.)

Steps to reproduce

from rest_framework import serializers

class TestSerializer(serializers.Serializer):
    json = serializers.JSONField()

s = TestSerializer(data={'json': "{broken JSON"})
assert s.is_valid() is False

Expected behavior

Invalid JSON should result in is_valid() returning False.

Actual behavior

is_valid() returns True

Specifying binary=True for the field definition results in the desired behavior for serialization, but causes deserialization to fail on Python 3.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions