gpt4 book ai didi

javascript - JS 将字符串转成json对象

转载 作者:行者123 更新时间:2023-11-30 07:49:59 27 4
gpt4 key购买 nike

需要将字符串转成json对象。


json对象/字符串的规则:

  1. 每次迭代递增 1。
  2. split('|'),这是json对象中的每一行。
  3. split('^'),这是行中的每个字段。
  4. split('~'),这是字段中的每个子字段。
  5. 需要考虑没有子字段、字段或行
  6. 需要在 ES6 之前的 Internet Explorer 11 中运行

String Example:
var str = "1863707152859270^Exercise to lose weight^289169006^Reduce 20 pounds^Walk daily for one hour. Have a light dinner.^5/10/2013 12:00:00 AM^^1/21/2019 4:25:52 PM^Y^Frank the Tank^1/22/2019 8:50:02 AM^1/22/2019 8:50:02 AM^Frank the Tank^Abnormal LGSIL^1848065703239670^1863707006859070|1863707222859280^Exercise to lose weight^289169006^Reduce 20 pounds^Walk daily for one hour. Have a light dinner.^5/10/2013 12:00:00 AM^^1/21/2019 4:27:02 PM^Y^Frank the Tank^1/22/2019 8:50:02 AM^1/22/2019 8:50:02 AM^Frank the Tank^Abnormal LGSIL^1848065703239670^1863707006859070"

尝试:

 var str = "1863707152859270^Exercise to lose weight^289169006^Reduce 20 pounds^Walk daily for one hour. Have a light dinner.^5/10/2013 12:00:00 AM^^1/21/2019 4:25:52 PM^Y^Frank the Tank^1/22/2019 8:50:02 AM^1/22/2019 8:50:02 AM^Frank the Tank^Abnormal LGSIL^1848065703239670^1863707006859070|1863707222859280^Exercise to lose weight^289169006^Reduce 20 pounds^Walk daily for one hour. Have a light dinner.^5/10/2013 12:00:00 AM^^1/21/2019 4:27:02 PM^Y^Frank the Tank^1/22/2019 8:50:02 AM^1/22/2019 8:50:02 AM^Frank the Tank^Abnormal LGSIL^1848065703239670^1863707006859070"
function ParseDelimList(str){
var result=[];
var rows = str.split('|');

var tmpString3 = [];
for(var i=0;i<rows.length;i++){
var fields = rows[i].split('^');

var tmpString2 = [];
for(var j=0;j<fields.length;j++){
var subfields = fields[j].split('~');

var tmpString1 = [];
for(var l=0;l<subfields.length;l++){
var tmp1 = "{"+l+":"+subfields[l]+"},"
tmpString1.push(tmp1);
};
var tmp2 = "{"+j+":"+tmpString1[j]+"},";
tmpString2.push(tmp2);
};
var tmp3 = "{"+i+":"+tmpString2[i]+"},";
tmpString3.push(tmp3);
};
return tmpString3;
};

console.log(ParseDelimList(str))


最终结果(类似这样):

var json = [
"1":{
{"0":"1863707152859270"},
{"1":"Exercise to lose weight"},
{"2":"289169006"},
{"3":"Reduce 20 pounds"},
{"4":"Walk daily for one hour. Have a light dinner."},
{"5":"5/10/2013 12:00:00 AM"},
{"6":"1/21/2019 4:25:52 PM"},
{"7":"Y"},
{"8":"Frank the Tank"},
{"9":"1/22/2019 8:50:02 AM"},
{"10":"1/22/2019 8:50:02 AM"},
{"11":"Frank the Tank"},
{"12":"Abnormal LGSIL"},
{"13":"1848065703239670"},
{"14":"1863707006859070"},
},
"2":{
{"0":"1863707152859270"},
{"1":"Exercise to lose weight"},
{"2":"289169006"},
{"3":"Reduce 20 pounds"},
{"4":"Walk daily for one hour. Have a light dinner."},
{"5":"5/10/2013 12:00:00 AM"},
{"6":"1/21/2019 4:25:52 PM"},
{"7":"Y"},
{"8":"Frank the Tank"},
{"9":"1/22/2019 8:50:02 AM"},
{"10":"1/22/2019 8:50:02 AM"},
{"11":"Frank the Tank"},
{"12":"Abnormal LGSIL"},
{"13":"1848065703239670"},
{"14":"1863707006859070"},
}
];

最佳答案

开始吧,准备好进行 JSON.stringify。三次 split 后跟 map 可以让你到达那里:

var str = "1863707152859270^Exercise to lose weight^289169006^Reduce 20 pounds^Walk daily for one hour. Have a light dinner.^5/10/2013 12:00:00 AM^^1/21/2019 4:25:52 PM^Y^Frank the Tank^1/22/2019 8:50:02 AM^1/22/2019 8:50:02 AM^Frank the Tank^Abnormal LGSIL^1848065703239670^1863707006859070|1863707222859280^Exercise to lose weight^289169006^Reduce 20 pounds^Walk daily for one hour. Have a light dinner.^5/10/2013 12:00:00 AM^^1/21/2019 4:27:02 PM^Y^Frank the Tank^1/22/2019 8:50:02 AM^1/22/2019 8:50:02 AM^Frank the Tank^Abnormal LGSIL^1848065703239670^1863707006859070";

var result = str.split('|').map(x => {
return {
row: x.split('^').map(y => {
return {
field: y.split('~').map(z => {
return {
subfield: z
};
})
}
})
}
});

console.log(result);

由于您对预期结果并不完全清楚,如果有任何遗漏,请告诉我。

编辑:在下面添加了与 IE 11 兼容的相同解决方案:

var str = "1863707152859270^Exercise to lose weight^289169006^Reduce 20 pounds^Walk daily for one hour. Have a light dinner.^5/10/2013 12:00:00 AM^^1/21/2019 4:25:52 PM^Y^Frank the Tank^1/22/2019 8:50:02 AM^1/22/2019 8:50:02 AM^Frank the Tank^Abnormal LGSIL^1848065703239670^1863707006859070|1863707222859280^Exercise to lose weight^289169006^Reduce 20 pounds^Walk daily for one hour. Have a light dinner.^5/10/2013 12:00:00 AM^^1/21/2019 4:27:02 PM^Y^Frank the Tank^1/22/2019 8:50:02 AM^1/22/2019 8:50:02 AM^Frank the Tank^Abnormal LGSIL^1848065703239670^1863707006859070";

var result = str.split('|').map(function(x) {
return {
row: x.split('^').map(function(y) {
return {
field: y.split('~').map(function(z) {
return {
subfield: z
};
})
}
})
}
});

console.log(result);

关于javascript - JS 将字符串转成json对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54700986/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com