2017-03-15 9 views
6

मैं फ़ाइल अपलोडर इनपुट का उपयोग करके अपलोड की गई CSV फ़ाइल से प्राप्त डेटा से JSON फ़ाइल बनाने का प्रयास कर रहा हूं।टाइपस्क्रिप्ट में JSON से JSON

मुझे जावास्क्रिप्ट में ऐसा करने के लिए बहुत सी पोस्ट मिली हैं लेकिन वे टाइपस्क्रिप्ट में मेरे लिए काफी काम नहीं कर रहे हैं।

नीचे दिए गए कोड को चलाने पर मुझे जो त्रुटि मिलती है वह csv.Split कोई फ़ंक्शन नहीं है, क्या किसी के पास कोई विचार है कि मैं अपना कोड कैसे काम कर सकता हूं।

मुझे बताएं कि आपको अधिक जानकारी चाहिए और अग्रिम धन्यवाद।

component.ts

public testFile() { 
    var file = (<HTMLInputElement>document.getElementById('fileInput')).files[0];   

    var jsonFile = this.csvJSON(file); 


    // Set Http POST options 
    let headers = new Headers({ 'Content-Type': 'application/json' }); 
    let options = new RequestOptions({ headers: headers }); 

    // Call Api with test connection data 
    this.http 
     .post('/api/TestConnection/TestConnection', jsonFile, options) 
     .subscribe(data => { 
      // alert request ok 
      alert('ok'); 
     }, error => { 
      // Log error 
      console.log(error.json()); 
     }); 
} 

public csvJSON(csv) { 
    var lines = csv.split("\n"); 

    var result = []; 

    var headers = lines[0].split(","); 

    for (var i = 1; i < lines.length; i++) { 

     var obj = {}; 
     var currentline = lines[i].split(","); 

     for (var j = 0; j < headers.length; j++) { 
      obj[headers[j]] = currentline[j]; 
     } 

     result.push(obj); 

    } 

    //return result; //JavaScript object 
    return JSON.stringify(result); //JSON 
} 
+0

क्या आप सीएसवी से हैश टेबल (सरणी) में डेटा डालना और फिर इसे जेसन में परिवर्तित करना आसान और अधिक पठनीय नहीं है? – IvRRimUm

+0

निश्चित रूप से ऐसा करने का एक बेहतर तरीका हो सकता है, ठीक है कि मैं सलाह क्यों मांग रहा हूं। –

+0

ठीक है, आप अपने वर्तमान कोड से क्या त्रुटियां प्राप्त करते हैं? – IvRRimUm

उत्तर

3

आप FilecsvJSON बजाय विधि फ़ाइल का पाठ करने के लिए गुजर रहे हैं। आप अपनी सामग्री को पढ़ने के लिए FileReader का उपयोग कर सकते हैं। यहाँ एक उदाहरण

const convertFile =() => { 
 
    const input = document.getElementById('fileInput'); 
 

 
    const reader = new FileReader(); 
 
    reader.onload =() => { 
 
    let text = reader.result; 
 
    console.log('CSV: ', text.substring(0, 100) + '...'); 
 
    
 
    //convert text to json here 
 
    //var json = this.csvJSON(text); 
 
    }; 
 
    reader.readAsText(input.files[0]); 
 
};
<input type='file' onchange='convertFile(event)' id='fileInput'>

+0

पर भेजना चाहिए, बहुत धन्यवाद, एक इलाज की तरह काम किया :) –

0

एचटीएमएल

<input type="file" accept=".csv (change)="csv2Array($event)"> 

टाइपप्रति

है 0
csv2Array(fileInput: any){ 
//read file from input 
this.fileReaded = fileInput.target.files[0]; 

let reader: FileReader = new FileReader(); 
reader.readAsText(this.fileReaded); 

reader.onload = (e) => { 
let csv: string = reader.result; 
let allTextLines = csv.split(/\r|\n|\r/); 
let headers = allTextLines[0].split(','); 
let lines = []; 

    for (let i = 0; i < allTextLines.length; i++) { 
    // split content based on comma 
    let data = allTextLines[i].split(','); 
    if (data.length === headers.length) { 
     let tarr = []; 
     for (let j = 0; j < headers.length; j++) { 
     tarr.push(data[j]); 
     } 

    // log each row to see output 
    console.log(tarr); 
    lines.push(tarr); 
    } 
} 
// all rows in the csv file 
console.log(">>>>>>>>>>>>>>>>>", lines); 
} 
}