简体   繁体   English

使用js将原始数据传递给Array或Json

[英]Raw data to Array or Json using js

It would be helpful if someone could assist on this. 如果有人可以帮助解决这个问题会很有帮助。 I want to store this raw data into array from BEGIN:VEVENT to END:VEVENT 我想将这些原始数据存储到BEGIN:VEVENTEND:VEVENT数组中

raw data 原始数据

BEGIN : VEVENT\r\nDTSTART;
TZID = America / New_York : 20161231 T123000\r\nDTEND;
TZID = America / New_York : 20161231 T133000\r\nRRULE : FREQ = WEEKLY;
UNTIL = 20170211 T045959Z;
BYDAY = SA\r\nDTSTAMP : 20170228 T012109Z\r\nUID : h742jrf72h1r4oferera9dp070@google.com\r\nCREATED : 20170102 T190437Z\r\nDESCRIPTION : \r\nLAST - MODIFIED : 20170211 T152911Z\r\nLOCATION : \r\nSEQUENCE : 0 \r\nSTATUS : CONFIRMED\r\nSUMMARY : happy\r\nTRANSP : OPAQUE\r\nEND : VEVENT\r\nBEGIN : VEVENT\r\nDTSTART;
TZID = America / New_York : 20170106 T170000\r\nDTEND;
TZID = America / New_York : 20170106 T173000\r\nRRULE : FREQ = WEEKLY;
BYDAY = FR\r\nDTSTAMP : 20170228 T012109Z\r\nUID : ukad1og7htm89pc8j4di4otlk8_R20170106T220000@google.com\r\nCREATED : 20141126 T041733Z\r\nDESCRIPTION : \r\nLAST - MODIFIED : 20170120 T210013Z\r\nLOCATION : sds\r\nSEQUENCE : 0 \r\nSTATUS : CONFIRMED\r\nSUMMARY : Gold / Blue / Green Weapons\r\nTRANSP : OPAQUE\r\nBEGIN : VALARM\r\nACTION : NONE\r\nTRIGGER;
VALUE = DATE - TIME : 19760401 T005545Z\r\nEND : VALARM\r\nEND : VEVENT\r\nBEGIN : VEVENT\r\nDTSTART;
TZID = America / New_York : 20161229 T160000\r\nDTEND;
TZID = America / New_York : 20161229 T164500\r\nDTSTAMP : 20170228 T012109Z\r\nUID : 8 thf9943qdnjkcrtlvt6k8kjmg@google.com\r\nRECURRENCE - ID;
TZID = America / New_York : 20161229 T160000\r\nCREATED : 20160612 T220329Z\r\nDESCRIPTION : \r\nLAST - MODIFIED : 20170117 T200013Z\r\nLOCATION : \r\nSEQUENCE : 0 \r\nSTATUS : CONFIRMED\r\nSUMMARY : Juniors school\r\nTRANSP : OPAQUE\r\nBEGIN : VALARM\r\nACTION : NONE\r\nTRIGGER;
VALUE = DATE - TIME : 19760401 T005545Z\r\nEND : VALARM\r\nEND : VEVENT\r\n

expected output 预期产出

[
  {
    Hide Copy Code BEGIN: VEVENT,
    DTSTART: 20160314 T093000Z,
    DTEND: 20160314 T143000Z,
    DTSTAMP: 20160427 T141329Z,
    CREATED: 20160228 T142659Z,
    DESCRIPTION: For assembler,
    LAST - MODIFIED: 20160314 T133208Z,
    SEQUENCE: 0,
    STATUS: CONFIRMED,
    END: VEVENT
  }, {
    Hide Copy Code BEGIN: VEVENT,
    DTSTART: 20160314 T093000Z,
    DTEND: 20160314 T143000Z,
    DTSTAMP: 20160427 T141329Z,
    CREATED: 20160228 T142659Z,
    DESCRIPTION: For assembler,
    LAST - MODIFIED: 20160314 T133208Z,
    SEQUENCE: 0,
    STATUS: CONFIRMED,
    END: VEVENT
  }
]

I see it works in ruby. 我认为它适用于红宝石。 I tried some api for js converting icasdata to Json, but it doesn't fetch exact data so I'm thinking if I can read the raw data and pass it to an array without any API. 我尝试了一些api for js将icasdata转换为Json,但它没有获取确切的数据,所以我在想是否可以读取原始数据并将其传递给没有任何API的数组。 Any suggestion on above question that will help. 对上述问题的任何建议都会有所帮助。 Thanks. 谢谢。

I'm not entirely sure what it is you want, but from my understanding if the raw data is a string and you want arrays of json marked with END: VEVENT . 我不完全确定你想要什么,但是根据我的理解,如果原始数据是一个字符串,你想要使用END: VEVENT标记的json数组。 This could be a good starting place. 这可能是一个很好的起点。 I hope this helps you even if in the smallest way: 我希望即使以最小的方式帮助你:

 var rawData = "BEGIN:VEVENT\\r\\nDTSTART;TZID=America/New_York:20161231T123000\\r\\nDTEND;TZID=America/New_York:20161231T133000\\r\\nRRULE:FREQ=WEEKLY;UNTIL=20170211T045959Z;BYDAY=SA\\r\\nDTSTAMP:20170228T012109Z\\r\\nUID:h742jrf72h1r4oferera9dp070@google.com\\r\\nCREATED:20170102T190437Z\\r\\nDESCRIPTION:\\r\\nLAST-MODIFIED:20170211T152911Z\\r\\nLOCATION:\\r\\nSEQUENCE:0\\r\\nSTATUS:CONFIRMED\\r\\nSUMMARY:happy\\r\\nTRANSP:OPAQUE\\r\\nEND:VEVENT\\r\\nBEGIN:VEVENT\\r\\nDTSTART;TZID=America/New_York:20170106T170000\\r\\nDTEND;TZID=America/New_York:20170106T173000\\r\\nRRULE:FREQ=WEEKLY;BYDAY=FR\\r\\nDTSTAMP:20170228T012109Z\\r\\nUID:ukad1og7htm89pc8j4di4otlk8_R20170106T220000@google.com\\r\\nCREATED:20141126T041733Z\\r\\nDESCRIPTION:\\r\\nLAST-MODIFIED:20170120T210013Z\\r\\nLOCATION:sds\\r\\nSEQUENCE:0\\r\\nSTATUS:CONFIRMED\\r\\nSUMMARY:Gold/Blue/Green Weapons\\r\\nTRANSP:OPAQUE\\r\\nBEGIN:VALARM\\r\\nACTION:NONE\\r\\nTRIGGER;VALUE=DATE-TIME:19760401T005545Z\\r\\nEND:VALARM\\r\\nEND:VEVENT\\r\\nBEGIN:VEVENT\\r\\nDTSTART;TZID=America/New_York:20161229T160000\\r\\nDTEND;TZID=America/New_York:20161229T164500\\r\\nDTSTAMP:20170228T012109Z\\r\\nUID:8thf9943qdnjkcrtlvt6k8kjmg@google.com\\r\\nRECURRENCE-ID;TZID=America/New_York:20161229T160000\\r\\nCREATED:20160612T220329Z\\r\\nDESCRIPTION:\\r\\nLAST-MODIFIED:20170117T200013Z\\r\\nLOCATION:\\r\\nSEQUENCE:0\\r\\nSTATUS:CONFIRMED\\r\\nSUMMARY:Juniors school\\r\\nTRANSP:OPAQUE\\r\\nBEGIN:VALARM\\r\\nACTION:NONE\\r\\nTRIGGER;VALUE=DATE-TIME:19760401T005545Z\\r\\nEND:VALARM\\r\\nEND:VEVENT\\r\\n" function rawToJSON(raw) { var arr = []; var lines = raw.split('\\r\\n'); lines.reduce(function(obj, line){ var keyValue = line.split(":"); var key = keyValue[0]; var value = keyValue[1]; Object.assign(obj, {[key]: value}); if (key == 'END' && value == 'VEVENT') { arr.push(obj); return {}; } return obj; }, {}); return arr; } console.log(rawToJSON(rawData)); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM