Announcement

Collapse
No announcement yet.

CSV into JSON !

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • CSV into JSON !

    Hi All,

    I need to turn a csv message into JSON. What I'm stuck with is the repeating values in the CSV that need to be turned into repeating values in the JSON.
    For example, the below CSV:
    Monday,Apples;Oranges;Peaches;Mangoes,
    Needs to be turned into the below JSON:
    {
    "Day": "Monday",
    "Fruits": [{"Fruit1":"Apples","Fruit2":"Oranges","Fruit3":"Pe aches", "Fruit4":"Mangoes"}]
    }

    Any help would be greatly appreciated!

  • #2
    Hi,

    here is a rather pedestrian approach which works.
    I'm just writing the JSON object into a string.
    Code:
    tmp = "";
    var numCols=msg["row"].children().length();
    for each (seg in msg["row"].children()) {
    	var num = parseInt(seg.name().toString().replace(/column/,""),10);
    	if (num==1) {
    		tmp += '{"Day":"'+msg['row']['column1'].toString()+'",';
    	} else if(num==2) {
    		tmp+='"Fruits":[{"Fruit'+(num-1).toString()+'":"'+msg['row']['column'+num.toString()].toString()+'"';
    	} else {
    		tmp+=',"Fruit'+(num-1).toString()+'":"'+msg['row']['column'+num.toString()].toString()+'"';
    	}
    	if(num==numCols) {
    		tmp += "}]}"
    	}
    
    }
    msg=tmp;
    Perhaps somebody can do it more elegantly....

    Comment


    • #3
      I would normally expect the JSON to look like this:
      Code:
      {
        "Day": "Monday",
        "Fruits": ["Apples", "Oranges", "Peaches", "Mangoes"]
      }
      That would be produced by this code:
      Code:
      msg = {
          Day: msg.row.child(0).toString(),
          Fruits: msg.row.child(1).toString().split(';')
      }
      This will output JSON like you described:
      Code:
      msg = {
          Day: msg.row.child(0).toString(),
          Fruits: [msg.row.child(1).toString().split(';').reduce(function(obj, fruit, i) {obj['Fruit'+(i+1)] = fruit; return obj}, {})]
      }

      Comment

      Working...
      X