【问题标题】:How to extract inner string from the array string [closed]如何从数组字符串中提取内部字符串[关闭]
【发布时间】:2016-12-27 21:26:54
【问题描述】:

我有以下字符串,包含一个数组,包含一个字符串:

   '["sgrdalal21"]'

如何提取内部字符串?

【问题讨论】:

  • 简单读取它的第一个索引var str = ["sgrdalal21"][0]
  • 感谢@Satpal,但它只给了我这个角色[
  • 那么["sgrdalal21"] 是一个字符串而不是一个数组。测试一次JSON.parse('["sgrdalal21"]')[0]
  • 是的,它是字符串,谢谢@Satpal。但是这个问题和你标记的兄弟不一样!
  • 这样的数据是某些双重编码的结果,我不会感到惊讶。如果是这样,并且只要有可能,最好只修复生成数据的代码,而不是在顶部添加解决方法。

标签: javascript jquery


【解决方案1】:

作为'["sgrdalal21"]'作为字符串,JSON.parse()可用于构造JavaScript值或对象。

var obj = JSON.parse('["sgrdalal21"]');
var str = obj[0]; //Use index to access the element

【讨论】:

    【解决方案2】:

    你拥有的是一个 JSON 字符串:

    var json = '["sgrdalal21"]';
    

    您必须将其解析为 JSON 才能拥有一个普通数组。 然后就可以访问数组中的字符串了:

    var array, string;
    try {
      array = JSON.parse(json);
      string = array[0];
    } catch (e) {
      // handle error
    }
    

    请记住,当您解析不确定是否有效的 JSON 字符串时(通常是这种情况),您将始终必须将 JSON.parse() 调用包装在 try/catch 块内,否则您的应用程序将崩溃无效的 JSON。我注意到人们很少处理示例中的JSON.parse() 错误,然后人们惊讶于他们的服务器崩溃并且不知道为什么。这是因为JSON.parse() 会在输入错误时引发异常,并且必须与try/catch 一起使用以避免整个应用程序崩溃:

    var array;
    try {
      array = JSON.parse(json);
    } catch (e) {
      // handle error
    }
    

    您也可以为此使用tryjson

    var array = tryjson.parse(json);
    

    它会自动为您完成。现在您可以使用:

    var string = array && array[0];
    

    如果 JSON 无效或数组不包含任何元素,则 string 变量将为 undefined,或者等于内部字符串,就像上面第一个示例中的 try/catch 一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-04
      • 1970-01-01
      • 2018-05-13
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      相关资源
      最近更新 更多