Note that there are some explanatory texts on larger screens.

plurals
  1. POconvert string (with structure object) to object
    primarykey
    data
    text
    <p>I have a json information and I want to use it to create an <strong>object</strong> like this one:</p> <pre><code>var legends = { "Altimetry" : { 0 : { legenrowname : "0m - 250m ", fillcolor : "005500", bordercolor : "" }, 1 : { legenrowname : "250m - 1000m ", fillcolor : "ffff7f", bordercolor : "" }, 2 : { legenrowname : "1000m - 5000m ", fillcolor : "B47811", bordercolor : "" }, 3 : { legenrowname : "+ 5000m ", fillcolor : "482400", bordercolor : "" } } }; alert(legends); //the result is this: Object [] </code></pre> <p>it´s recognize as an object (that´s what I need in the next step)</p> <p>Now, I´m trying to create it dynamically with legends2</p> <pre><code>var dataL = ${dataJsonLegends}; var legends2 =""; var lengthL = dataL.length; $.each(dataL, function(i, item){ legendName = item.legendname; legends2= '"' + legendName + '":{'; dataR = item.rows; var lengthR = dataR.length; $.each(dataR, function(j, item2){ id=item2.uid; rowname=item2.legendrowname; fillcolor=item2.fillcolor; rowobject = id + ' : { legenrowname:"' + rowname + '", fillcolor:"' + fillcolor + '"}'; if(j!=lengthR-1) rowobject = rowobject + ","; legends2= legends2+ rowobject; }); legends2= legends2+ '}'; if(i!=lengthL-1) legends2= legends2+ ","; }); alert(legends2); //the result is this: "Altimetry" : { 0 : { legenrowname : "0m - 250m ", fillcolor : "005500", bordercolor : "" },1 : { legenrowname : "250m - 1000m ", fillcolor : "ffff7f", bordercolor : "" },2 : { legenrowname : "1000m - 5000m ", fillcolor : "B47811", bordercolor : "" },3 : { legenrowname : "+ 5000m ", fillcolor : "482400", bordercolor : "" }} </code></pre> <p>The legends2 value is what I expected but I want it to be recognize as an object and not as an string with object structure.</p> <p>I tried many things to solve it. <code>JSON.parse</code>, <code>eval</code>, etc... but no one works.</p> <p>¿Could someone help or give me a tip?</p> <p>Edited: incoming json</p> <p>I post my json object (dataL), which I use to create the structure I need.</p> <pre><code>[{"uid":1,"legendname":"Altimetry","legend_description":null,"rows":[{"uid":2,"legendrowname":"250m - 1000m","fillcolor":"ffff7f","bordercolor":null,"rast_value":null,"fillcolorrgb":null,"bordercolorrgb":null,"legendrow_description":null,"legend":null},{"uid":4,"legendrowname":"+ 5000m","fillcolor":"482400","bordercolor":null,"rast_value":null,"fillcolorrgb":null,"bordercolorrgb":null,"legendrow_description":null,"legend":null},{"uid":1,"legendrowname":"0m - 250m","fillcolor":"005500","bordercolor":null,"rast_value":null,"fillcolorrgb":null,"bordercolorrgb":null,"legendrow_description":null,"legend":null},{"uid":3,"legendrowname":"1000m - 5000m","fillcolor":"B47811","bordercolor":null,"rast_value":null,"fillcolorrgb":null,"bordercolorrgb":null,"legendrow_description":null,"legend":null}],"layer":{"id":1,"description":"Altimetry","geoserver":"/geoserver/Sopcawind/wms","name":"Sopcawind:srtm","transparent":true,"format":"image/png","viewparams":"","isbaselayer":false,"opacity":0.5,"color":"#2b383b","visibility":false,"groupid":1,"infocontrol":true,"geometry":"","featuretype":"","srs":"","extradata":"","legends":null,"project":null}}]; </code></pre> <p>Edited2: I tried to use the code but I don`t really need a json object. I use a json object to create another basic object with this structure:</p> <pre><code>//loop legends legends={"legendname": { //loop rows row.id : { legenrowname : row.legendrowname, fillcolor : row.fillcolor, bordercolor : row.bordercolor } }} </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload