将字符串转换为asp中的json数组

时间:2018-09-19 07:22:12

标签: javascript jquery asp.net

嗨,我从asp获得了字符串值,并将该字符串值传递给json。现在我想转换为数组,这是我的代码

     var dataset = [{
    "measure": "Sheet",
    "interval_s": 365 * 24 * 60 * 60,
     "data": $(function () {
        $("<%=lbl.ClientID%>").load(function () {
            var string = $( document.getElementById("<%=lbl.ClientID%>")).innerHTML();
            var splitstr = string.split(',');
            var result = "";
            for (i = 0; i < splitstr.length; i++) {
                result += (splitstr[i]);
            }
        })
    })

    }];

,字符串输入为

** ['2018-09-17 09:45:47',1,'2018-09-17 10:19:24'],['2018-09-17 15:53:30',1 ,'2018-09-17 17:35:55'],['2018-09-17 18:54:15',0,'2018-09-17 18:55:19'] **

我需要的输出为数组格式

 ['2018-09-17 09:45:47',1,'2018-09-17 10:19:24'],
  ['2018-09-17 > 15:53:30',1,'2018-09-17 17:35:55'], 
 ['2018-09-17 18:54:15',0,'2018-09-17 18:55:19']

4 个答案:

答案 0 :(得分:1)

好吧,这在很大程度上取决于输入字符串的外观。假设它始终为['2018-09-17 09:45:47',1,'2018-09-17 10:19:24'],['2018-09-17 15:53:30',1,'2018-09-17 17:35:55'],['2018-09-17 18:54:15',0,'2018-09-17 18:55:19']格式,则分割后的字符串会捕获所有逗号-即使在括号[..,..],..中。

您可以将分割后的字符串更改为"],[",并删除第一个数组元素的第一个字符和最后一个数组元素的最后一个字符。

var string = $( document.getElementById("<%=lbl.ClientID%>")).innerHTML();
var array = string.split('],[').map(function(str, index, array) {
  if(index === 0) {
    return str.substring(1);
  } else if (index === array.length -1) {
    return str.substring(0, str.length -1);
  } else {
    return str;
  }
});

答案 1 :(得分:1)

您可以使用拆分功能将其添加到列表中。 假设您将字符串放在名为x的变量中。 x获取您的输入字符串。

var stringValues = "['2018-09-17 09:45:47',1,'2018-09-17 10:19:24'],['2018-09-17 15:53:30',1,'2018-09-17 17:35:55'],['2018-09-17 18:54:15',0,'2018-09-17 18:55:19']"

将其放入字符串数组。

String[] stringValues = stringValues.Split(new string[] { "]," }, StringSplitOptions.None);

然后实现此foreach逻辑

foreach(var item in stringValues)
    {
        var d = item + ']' + ',';
        Console.WriteLine(d);
    }

之后,只需删除最后两个字符[],

使用此代码

    var finalArrayOutput = d.Remove(d.Length - 3, 3);

输出将是:

['2018-09-17 09:45:47',1,'2018-09-17 10:19:24'],

['2018-09-17 15:53:30',1,'2018-09-17 17:35:55'], ['2018-09-17 18:54:15',0,'2018-09-17 18:55:19']],

这里是一个提琴手。 click here

答案 2 :(得分:0)

看起来您的数据可以用逗号分隔的JSON数组序列读取。因此,请将其放在方括号中并进行解析。

var inputString = $( document.getElementById("<%=lbl.ClientID%>")).innerHTML();
inputString = "[" + inputString + "]";
var result = JSON.parse(inputString)
console.log(result);

答案 3 :(得分:0)

您可以尝试使用正则表达式查找并删除字符串中的方括号,然后以逗号分隔它将返回一个数组。

var mystring = "['2018-09-17 09:45:47',1,'2018-09-17 10:19:24'],['2018-09-17 > 15:53:30',1,'2018-09-17 17:35:55'],['2018-09-17 18:54:15',0,'2018-09-17 8:55:19']";
var myarr = mystring.replace(/\[|\]/g, "").split(",");

// output
// ['2018-09-17 09:45:47',1,'2018-09-17 10:19:24','2018-09-17 > 15:53:30',1,'2018-09-17 17:35:55','2018-09-17 18:54:15',0,'2018-09-17 8:55:19']