【问题标题】:Django JSONField: Unexpected array elementDjango JSONField:意外的数组元素
【发布时间】:2017-09-02 15:08:39
【问题描述】:

我正在尝试在 Django 中保存记录 JSONField,声明如下:

class MyClass(models.Model):
   myfield = JSONField()

使用此代码片段:

MyClass.objects.create(myfield = {'a': 1, 'b': 2})

但它会导致

DataError: malformed array literal: "{"a": 1, "b": 2}"
LINE 1: ... '{"a": 1, ...
             ^
DETAIL:  Unexpected array element.

我正在尝试遵循此处描述的示例:https://docs.djangoproject.com/en/1.10/ref/contrib/postgres/fields/

谁能指出我在这里遗漏了什么?

【问题讨论】:

  • 您尝试将 JSON 数据插入 ARRAY 列,但这些数据类型不同
  • @VaoTsun 但是数组列在哪里?我将该字段声明为JSONField
  • 此字段要求 PostgreSQL ≥ 9.4 和 Psycopg2 ≥ 2.5.4。
  • @itzmeontv 我使用 PostgreSQL 9.6 和 Psycopg2 2.6.1
  • 有时 Django 会以神秘的方式出现错误行为:尝试 myfield={'a': 1,'b':2} (消除 '=' 周围的空白)。另外,你迁移数据库了吗?

标签: json django postgresql


【解决方案1】:

通常,如果对特定数据类型的类型转换未正确完成,则会返回此错误。我可以通过将其显式转换为 jsonb 来消除此错误:MyClass.objects.create(myfield = ({'a': 1, 'b': 2})::jsonb).

正如@John 指出的那样,消除空格并尝试一下。这也可能有帮助。

【讨论】:

    猜你喜欢
    • 2019-02-04
    • 2019-05-15
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 2016-05-10
    • 1970-01-01
    相关资源
    最近更新 更多