是否可以使用JavaScript转换这样的字符串:
"Product : Bike , 2005 : $12000,2006 : $13000,2007 : $14000,2008 : $15000"
到这样的JSON对象:
{
"Product":"Bike",
"2005" : $12000,
"2006" : $13000,
"2007" : $14000,
"2008" : $15000
}
答案 0 :(得分:1)
假设你的字符串的结构是相同的,用,
分割将给你一组键/值对,然后用:
分割每一对你将得到键和值。
var str = "Product : Bike , 2005 : $12000,2006 : $13000,2007 : $14000,2008 : $15000"
var obj={};
str.split(",").forEach(function(item){
var keyVal = item.split(":")
obj[keyVal[0].trim()] = keyVal[1].trim()
})
console.log(obj)
答案 1 :(得分:1)
您可split
,
和:
上的字符串trim
。请确保var string = "Product : Bike , 2005 : $12000,2006 : $13000,2007 : $14000,2008 : $15000";
var result = {};
var duplets = string.split(',');
for (var i = 0; i < duplets.length; i++) {
var duplet = duplets[i];
var values = duplet.split(':');
result[values[0].trim()] = values[1].trim();
}
console.log(result);
生成的字符串,因为条款周围还有空格。
var string = "Product : Bike , 2005 : $12000,2006 : $13000,2007 : $14000,2008 : $15000";
var regex = /(?:^|,)([^,:]+):([^,]+)(?=$|,)/g;
var result = {};
while(match = regex.exec(string)) {
result[match[1].trim()] = match[2].trim();
}
console.log(result);
您还可以使用正则表达式:
(?:^|,)
以下是有关正则表达式的一些信息:
^
匹配字符串的开头(,
)或([^,:]+):
,
多次匹配除:
和:
以外的所有字符,直到下一个([^,]+)(?=$|,)
并形成第一个选择组,
多次匹配除$
以外的所有字符,直至字符串,
或下一个{{1}}的结尾。它形成了第二个匹配组。答案 2 :(得分:1)
replace()
with RegExp 细分,regular expression匹配如下:
\s*
任意数量的空白(包括无)(\:|,){1}
1
1
冒号或\s*
逗号g
任意数量的空格(包括无)$1
强制匹配所有匹配项,直到字符串结束。匹配由被引号"
包围的捕获值const str = "Product : Bike , 2005 : $12000,2006 : $13000,2007 : $14000,2008 : $15000",
json_str = '{"' + str.replace( /\s*(\:|,){1}\s*/g, '"$1"' ) + '"}',
js_object = JSON.parse( json_str );
console.log( json_str ); // transportable
console.log( js_object ); // useable
替换。
这会导致修剪属性名称和值周围的所有前导和尾随空格,并正确引用属性名称和值。
然后,我们只需要在字符串的任一端添加引号和大括号,使其成为有效的JSON字符串,准备好parse()
到对象中。
//pull html buttons
var playBtn = document.getElementById("playBtn");
var pauseBtn = document.getElementById("pauseBtn");
var stopBtn = document.getElementById("stopBtn");
var backBtn = document.getElementById("backBtn");
var nextBtn = document.getElementById("nextBtn");
var index = 0
//make as JukeBox constructor
function Jukebox(){
this.jamz = []
}
//be able to add songs to the jukebox
Jukebox.prototype.addSong = function(songs){
this.jamz.push(songs);
}
//test audio in console log
/*Jukebox.prototype.play = function(){
var playSong = this.jamz;
console.log(this.jamz)
}*/
//Be able to push songs into the jukebox.
//first create a "new" jukebox
var jukebox = new Jukebox();
//use the previous prototype to add songs
jukebox.addSong(new Audio("audio/Young M.A - OOOUUU.mp3"));
jukebox.addSong(new Audio("audio/J Balvin - Safari.mp3"));
jukebox.addSong(new Audio("audio/Marshmello x Ookay - Chasing Colors.mp3"));
jukebox.addSong(new Audio("audio/Bryson Tiller - Run Me Dry.mp3"));
jukebox.addSong(new Audio("audio/Midnight To Monaco - One In A
Million.mp3"));
//give each button a method
Jukebox.prototype.play = function(){
this.jamz[index].play();
}
Jukebox.prototype.pause = function(){
this.jamz[index].pause();
}
Jukebox.prototype.stop = function(){
this.jamz[index].stop();
}
//figured out next button functionality through indexes. go back up top to
variables and create and index variable
Jukebox.prototype.next= function(){
this.jamz[index].pause(),
index++;
this.jamz[index].currentTime= 0,
this.jamz[index].play;
if (index ==this.jamz.length){
this.index.currentTime = 0;
this.jamz[index].play();
}
};
//same functionality as "next except" if statement index will = 0
Jukebox.prototype.back = function() {
this.jamz[index].pause();
index--;
this.jamz[index].currentTime = 0;
this.jamz[index].play();
if (index === 0) {
this.jamz[index].currentTime = 0;
this.jamz[index].play();
}
};
//add event listeners to the the buttons I pulled earlier.
playBtn.addEventListener("click", function(event) {
event.preventDefault();
jukebox.play();
})
pauseBtn.addEventListener("click", function(event) {
event.preventDefault();
jukebox.pause();
})
stopBtn.addEventListener("click", function(event) {
event.preventDefault();
jukebox.stop();
})
nextBtn.addEventListener("click", function(event) {
event.preventDefault();
jukebox.forward();
})
backBtn.addEventListener("click", function(event) {
event.preventDefault();
jukebox.back();
})
&#13;
答案 3 :(得分:0)
JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(stringToParse);