2016-05-24 7 views
1

Gibt es eine Möglichkeit, dass ich eine .json-Datei (auf dem Server) von einem Javascript http-Adapter lesen kann? Ich habe viele Methoden im Internet versucht, aber sie scheinen nicht zu funktionieren, weil sie für Browser-Javascript gemacht sind (ich bekomme Fehler wie XMLHttpRequest ist nicht definiert oder ActiveObject ist nicht definiert).Lokale Server .json Datei mit MobileFirst Javascript Adapter lesen

zum Beispiel, habe ich diese, aber es funktioniert nicht:

function readTextFile(file) 
{ 
    var rawFile = new XMLHttpRequest(); 
    rawFile.open("GET", file, false); 
    rawFile.onreadystatechange = function() 
    { 
     if(rawFile.readyState === 4) 
     { 
      if(rawFile.status === 200 || rawFile.status == 0) 
      { 
       var allText = rawFile.responseText; 
       return allText; 
      } 
     } 
    } 
    rawFile.send(null); 
} 

Gibt es eine Möglichkeit, dass ich diese Java ohne Verwendung tun könnte?

+0

Wo möchten Sie die JSON-Datei speichern? –

+0

Wie gesagt, die .json-Datei befindet sich im Server. – papakias

Antwort

2

Sie können eine Datei mit Javascript lesen, wie unten gezeigt.

function readFile(filename) { 
    var content = ""; 

    var fileReader = new java.io.FileReader(filename); 

    var bufferedReader = new java.io.BufferedReader(fileReader); 

    var line; 

    while((line = bufferedReader.readLine()) != null) { 
     content += line; 
    } 

    bufferedReader.close(); 

    return content; 
} 

function test() { 
    var file = 'yourfilename.json'; 
    var fileContents; 
    try { 
     fileContents = JSON.parse(readFile(file));  
    } catch(ex) { 
     // handle error     
    } 

    return { 
     fileContents: fileContents 
    }; 
} 
+0

GENAU, was ich wollte! Du bist der Boss, Mann! – papakias

+1

eine sehr kleine Korrektur: Ich habe die Zeile fileContents = JSON.parse (readFile (Datei)); , damit das zurückgegebene Objekt als JSON und nicht als Text zurückgegeben wird – papakias

+0

Wie können wir die Datei abrufen, wenn sie sich in der Adapterbereitstellung selbst befindet? – edwin

0

Für diejenigen, die an Java interessiert sind.

Eine Sache, die Sie tun können, ist einen Javascript-Adapter zu erstellen, der Java-Code verwendet. Es ist ziemlich einfach einzurichten.

Erstellen Sie zunächst einen Javascript-Adapter.

Dann erstellen Sie eine Java-Klasse unter dem Ordner server/lib. Ich habe die Klasse unter dem Paket com.sample.customcode erstellt.

Im Inneren des ReadJSON.java

public class ReadJSON { 
    public static String readJSON() throws IOException { 
     //Open File 
     File file = new File("file.txt"); 
     BufferedReader reader = null; 
     try { 
      //Create the file reader 
      reader = new BufferedReader(new FileReader(file)); 
      String text = null; 

      //read file 
      while ((text = reader.readLine()) != null) {} 
     } finally { 
      try { 
       //Close the stream 
       reader.close(); 
      } 
     } 
     return "the text from file"; 
    } 
} 

In Ihrem Javascript-Adapter können Sie Java-Methoden verwenden, wie unten:

function readJOSN() { 
    var JSONfromServer = com.sample.customcode.ReadJSON.readJSON(); 
    return { 
     result: JSONfromServer 
    }; 

} 

Hoffnung, das hilft.

+0

Meine Antwort verwendet Java. –

+0

Vielen Dank für Ihre wertvolle Hilfe. Ich hatte gehofft, dass dies nur mit einem Javascript-Adapter getan werden könnte ... Sehr hilfreiche Antwort dennoch – papakias