Чтение файла .json локального сервера с помощью адаптера javascript mobileFirst

Есть ли способ прочитать файл .json (расположенный на сервере) с http-адаптера javascript? Я пробовал много методов, описанных в Интернете, но они, похоже, не работают, потому что они созданы для javascript браузера (я получаю ошибки, такие как XMLHttpRequest не определен или активный объект не определен).

например, я использовал это, но это не работает:

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?


person papakias    schedule 24.05.2016    source источник
comment
где вы планируете хранить файл JSON?   -  person Yoel Nunez    schedule 24.05.2016
comment
Как я уже сказал, файл .json будет внутри сервера.   -  person papakias    schedule 24.05.2016


Ответы (2)


Вы можете прочитать файл с помощью 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
    };
}
person Yoel Nunez    schedule 24.05.2016
comment
очень небольшое исправление: я использовал строку fileContents = JSON.parse(readFile(file)); чтобы возвращаемый объект возвращался как JSON, а не как текст - person papakias; 24.05.2016
comment
Как мы можем получить файл, если он находится внутри самого развертывания адаптера?? - person edwin; 24.11.2017

Для тех, кто заинтересован в использовании Java.

Одна вещь, которую вы можете сделать, это создать адаптер Javascript, который будет использовать код Java. Это довольно просто настроить.

Сначала создайте адаптер Javascript.

Затем создайте класс Java в папке server/lib. Я создал класс ReadJSON.java в пакете com.sample.customcode.

Внутри 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
    };

}

Надеюсь это поможет.

person Chevy Hungerford    schedule 24.05.2016
comment
Мой ответ использует Java. - person Chevy Hungerford; 24.05.2016
comment
Спасибо за вашу ценную помощь. Я надеялся, что это можно сделать только с помощью адаптера javascript... Тем не менее, очень полезный ответ - person papakias; 24.05.2016