2017-03-01 13 views
1

誰かがこれを助けることができれば助けになります。私はBEGIN:VEVENTからEND:VEVENTjsを使用した配列またはJsonへの生データ

生データ

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 : [email protected]\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 : [email protected]\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 [email protected]\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 

予想される出力、私はそれがRubyで働く見

[ 
    { 
    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 
    } 
] 

に配列に、この生データを保存したいです。私はjsonにicasdataをJsonに変換するためにいくつかのAPIを試しましたが、正確なデータを取得しないので、rawデータを読み込んでAPIなしで配列に渡すことができるかどうかを考えています。上記の質問に対する助言があれば教えてください。ありがとう。

+0

あなたは – damitj07

+0

生データがtxtファイルである...あなたが期待しているJSON出力が有効なJSONであることを確認している:私は、これは、最小の方法であっても、あなたを助け願っていますか? –

+0

私はicalendarファイルから生データを取得しています...上記の形式のJsonまたは配列のいずれか...私は初心者ですように、Javaスクリプトの配列に生データをどのように変換できますかわかりません....どんな提案も参考になるでしょう! ps:すべての私はlookignですので、配列データでロジックをbuldすることができます配列 – TTT

答えて

0

私はそれがあなたが欲しいとは思っていませんが、生データが文字列であり、END: VEVENTとマークされたjsonの配列が必要な場合は私の理解からです。これは良いスタート地点になるかもしれません。

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:[email protected]\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:[email protected]\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:8thf[email protected]\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));

+0

こんにちは....このおかげで...私は予想される形式でouptutを参照してください....しかし、これはJavaScript?なぜなら、ノードjsでこのスニペットを試してみると、ノードjsはサポートされていないようです...無効な形式としてエラーが表示されます...( – TTT

+0

あなたは完全なエラーを出すことができますか?@Tea –

+0

これはSyntaxError:ブロックスコープの宣言(let、const、function、class)はまだ厳密モード外ではサポートされていません ReferenceError:代入時に無効な左辺 Function.Module._load(module .js:300:12) /home/vcap/app/app.js:29M at Module._compile(module.js:373:25) [key、value] = line.split( ":"); M exports.runInThisContext(vm.js:53:16) – TTT

関連する問題