使用 mobileFirst javascript 适配器读取本地服务器 .json 文件

Reading local server .json file with mobileFirst javascript adapter

有什么方法可以从 javascript http 适配器读取 .json 文件(位于服务器中)? 我尝试了很多在互联网上描述的方法,但它们似乎不起作用,因为它们是为浏览器制作的java脚本(我收到类似 XMLHttpRequest is not defined 或 activeObject is not defined 的错误)。

例如,我使用了这个但它不起作用:

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);
}  

有没有什么方法可以不使用 java 来做到这一点?

对于那些有兴趣使用 Java 的人。

您可以做的一件事是创建一个 Java 脚本适配器,它将使用 Java 代码。设置起来非常简单。

首先创建一个Java脚本适配器。

然后在server/lib文件夹下创建Javaclass。我在包 com.sample.customcode.

下创建了 class ReadJSON.java

里面 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";
    }
}

在您的 javascript 适配器中,您可以使用如下 Java 方法:

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

}

希望对您有所帮助。

您可以使用 Javascript 读取文件,如下所示。

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
    };
}