On Jan 5, 8:10 pm, Dave <[email protected]> wrote:
> Hi
>
> Wonder how I can convert a string to a json array.
>From what you've posted below, you want to process a string and treat
parts of it as JSON objects.
>
> //start code
>
> var arrCss = ["a___{'color':'red','font-weight':'bold'}", "h1,h2___
> {'color':'blue'}"];
Why not create it as a valid JSON object?
>
> for(var i = 0; i < arrCss.length; i++){
> var snip = arrCss[i].split("___");
> $(snip[0]).css(snip[1]);
> }
>
> //end code
>
> The problem is that .css() treats snip[1] as a string but I need it to
> handle it as a json array.
You don't want it to be a "json[sic] array", you want parts of the
string converted to an object with properties and string values, which
might be called a "JSON object". You could use:
...css(eval('(' + snip[1] + ')'));
A better solution might be to use a JSON object for the whole thing,
e.g.:
var xString = "{" +
"'a':{'color':'red','font-weight':'bold'}," +
"'h1,h2':{'color':'blue'}" +
"}";
var xObj = eval('(' + xString + ')' );
for (var selector in xObj) {
alert(xObj[selector].color); // red, blue
}
Which might be used in your posted code as:
var xObj = eval('(' + xString + ')' );
for (var selector in xObj) {
$(selector).css(xObj[selector]);
}
> Bad: .css("{'color':'red','font-weight':'bold'}");
> Good: .css({'color':'red','font-weight':'bold'});
--
Rob