django 将字符串数组转换为JavaScript中的数组

v1uwarro  于 2023-05-19  发布在  Go
关注(0)|答案(7)|浏览(190)

我从我的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
k2arahey

k2arahey1#

要解析它,您需要使用双引号而不是单引号。
这应该可以工作:

services = '["service1", "service2", "service3"]'
JSON.parse(services)
fxnxkyjh

fxnxkyjh2#

你的回答是

services = "['service1', 'service2', 'service3']"

如果父引号是单引号,而所有其他子引号都是双引号,则JSON.parse()将起作用。我在下面引用了一个例子

services = '["service1", "service2", "service3"]'

我们可以使用replace()来实现这一点。

services = "['service1', 'service2', 'service3']"
services = services.replace(/'/g, '"') //replacing all ' with "
services = JSON.parse(services)
console.log(services)
iyfjxgzm

iyfjxgzm3#

这是用来转换字符串的数组到纯数组

var a = '[Aakash,akash]'
a.replace(/\[|\]/g,'').split(',')
(2) ["Aakash", "akash"]
zsbz8rwp

zsbz8rwp4#

为了确保Django和一些JavaScript浏览器代码之间的正确解析,请确保在控制器中返回JsonResponse()。这确保了您可以在Javascript中使用JSON.parse()解析它。

v8wbuo2f

v8wbuo2f5#

尝试使用:

var services = "['service1', 'service2', 'service3']"
services = services .split(",");
services [0] = services [0].substring(1);
services [services .length - 1] = services [services .length - 1].substring(
  0,
  services [services .length - 1].length - 1
);
services .forEach((x, i) => {
  services [i] = services [i].includes('"') ? services [i].replaceAll('"', "").trim()
     : services [i].replaceAll("'", "").trim();
});

console.log(services );
fzwojiic

fzwojiic6#

只要按照这些步骤

  1. return new Array();
  2. int [0],int [1],int [2];
    通过这两个步骤,你的数组“['service 1','service 2','service 3']”将被转换为这个数组['service 1','service 2','service 3']
gcuhipw9

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”方法将其转换回数组。为此,请查看此处的片段。

let stillString = $("[data-something]").attr('data-something');
console.log(stillString);

let nowArray = stillString.split(",");
console.log(nowArray);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div data-something="test 1,test 2,test 3"></div>

将数组保持为字符串形式看起来可能不太美观,但它完成了任务,普通用户不会知道其中的区别。

    • 注意:你不需要使用逗号。你真的可以使用任何角色。唯一重要的是,你试图分离的值中没有一个包含你选择用来分割它们的字符。

相关问题