在javascript中将字符串数组转换为数组
Posted
技术标签:
【中文标题】在javascript中将字符串数组转换为数组【英文标题】:Convert string array to array in javascript 【发布时间】:2017-05-15 03:27:41 【问题描述】:我从我的 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://***.com/a/28200902
def to_internal_value(self, data):
return json.loads(data)
def to_representation(self, value):
return value
【问题讨论】:
JSON 中没有赋值,只有=
右侧的数据,看起来 JSON 应该在项目上有 "
而不是 '
,而且不要过度-全部引用。
您帖子中的services
是变量还是您收到的项目的一部分?
它是我从我的电话中收到的。我将它作为 services = JSONField(blank=True, default=list) 存储在我的模型中。我会尝试引用技巧,认为这可能是解析问题。
不要尝试使用自己的代码创建 JSON。使用json.dumps()
。
【参考方案1】:
这用于将数组的字符串转换为纯数组
var a = '[Aakash,akash]'
a.replace(/\[|\]/g,'').split(',')
(2) ["Aakash", "akash"]
【讨论】:
【参考方案2】:尝试使用:
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 );
【讨论】:
【参考方案3】:我最近发现了一种解决类似问题的迂回方法。我想将数组作为数据属性存储在 html 元素中,以便稍后在 JS 中使用它。但是,这样的 HTML 属性只能存储为字符串。为了解决这个...
-
首先,我将数组转换为单个字符串,每个值用逗号分隔(例如,
["test 1", "test 2", "test 3"]
写作“test 1,test 2,test 3”
)。
接下来,我将新字符串输入到所需的 HTML 数据属性中。 (例如<div data-somedata="test 1,test 2,test 3"></div>
)
进入 JS 后,我检索了该数据字符串并使用 jQuery 的“split”方法将其转换回数组。为此,请查看此处的 sn-p。
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>
这可能看起来不太漂亮,将数组保留为字符串,但它可以完成工作,您的普通用户不会知道其中的区别。
注意:您不必使用逗号。你真的可以使用任何字符。唯一重要的是,您尝试分隔的所有值都不包含您选择的用于分隔它们的字符。
【讨论】:
【参考方案4】:要解析它,您需要使用双引号而不是单引号。
这应该可行:
services = '["service1", "service2", "service3"]'
JSON.parse(services)
【讨论】:
它也适用于我。这背后有什么直觉吗?为什么带有“”的那个不起作用? 注意 JSON.parse() 后面的 ` @FatemehRahimi 带有''
的那个不起作用,因为 JSON 只能识别 ""
的字符串【参考方案5】:
为确保 Django 和一些 javascript 浏览器代码之间的正确解析,请确保在控制器中返回 JsonResponse()。这确保您可以在 Javascript 中使用 JSON.parse() 对其进行解析。
【讨论】:
以上是关于在javascript中将字符串数组转换为数组的主要内容,如果未能解决你的问题,请参考以下文章
在Javascript中将JSON字符串转换为JSON对象数组