我从我的django-rest-framework API调用中得到以下项:
services = "['service1', 'service2', 'service3']"
我要services = ['service1', 'service2', 'service3']
在我的JavaScript中,我尝试了services = JSON.parse(services)
-没有做任何事情,还尝试了$.parseJSON(services)
。
在我的序列化器中,我尝试了将服务设置为ListField
,还尝试了JSONSerializerField()
class JSONSerializerField(serializers.Field):
# Adapted from http://stackoverflow.com/a/28200902
def to_internal_value(self, data):
return json.loads(data)
def to_representation(self, value):
return value
7条答案
按热度按时间k2arahey1#
要解析它,您需要使用双引号而不是单引号。
这应该可以工作:
fxnxkyjh2#
你的回答是
如果父引号是单引号,而所有其他子引号都是双引号,则JSON.parse()将起作用。我在下面引用了一个例子
我们可以使用replace()来实现这一点。
iyfjxgzm3#
这是用来转换字符串的数组到纯数组
zsbz8rwp4#
为了确保Django和一些JavaScript浏览器代码之间的正确解析,请确保在控制器中返回JsonResponse()。这确保了您可以在Javascript中使用JSON.parse()解析它。
v8wbuo2f5#
尝试使用:
fzwojiic6#
只要按照这些步骤
通过这两个步骤,你的数组“['service 1','service 2','service 3']”将被转换为这个数组['service 1','service 2','service 3']
gcuhipw97#
我最近找到了一个迂回的方法来解决一个类似的问题。我想在HTML元素中存储一个数组作为数据属性,以便稍后在JS中使用它。但是,这样的HTML属性只能存储为字符串。为了解决这个问题。。
1.首先,我把数组变成一个字符串,每个值用逗号分隔(例如。
["test 1", "test 2", "test 3"]
写成“test 1,test 2,test 3”
)。1.接下来,我将新字符串输入到所需的HTML数据属性中。(例如
<div data-somedata="test 1,test 2,test 3"></div>
)1.进入JS后,我检索了该数据字符串,并使用jQuery的“split”方法将其转换回数组。为此,请查看此处的片段。
将数组保持为字符串形式看起来可能不太美观,但它完成了任务,普通用户不会知道其中的区别。