【问题标题】:Convert string array to array in javascript在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://stackoverflow.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()

标签: javascript arrays json django


【解决方案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 属性只能存储为字符串。为了解决这个...

      1. 首先,我将数组转换为单个字符串,每个值用逗号分隔(例如,["test 1", "test 2", "test 3"] 写作“test 1,test 2,test 3”)。
      2. 接下来,我将新字符串输入到所需的 HTML 数据属性中。 (例如<div data-somedata="test 1,test 2,test 3"></div>
      3. 进入 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() 对其进行解析。

        【讨论】:

          猜你喜欢
          • 2019-06-27
          • 1970-01-01
          • 2015-11-11
          • 2022-11-29
          • 1970-01-01
          • 2016-01-03
          • 2014-12-24
          • 2011-09-22
          相关资源
          最近更新 更多