Как файл json можно прочитать на Android с использованием Ionic и AngularJS Framework?

У меня теперь есть проблема относительно json, который нельзя прочитать в моем андроиде.

json файл - это место, где мои данные находятся... действуют как статическая база данных.

Я могу получить его с помощью своего рабочего стола, но когда он появится на моем мобильном устройстве, он не отобразится.

Вот мой пример кода:

Вот мои службы, чтобы получить мой json файл.

var serviceUrl = '/';
$http.get(serviceUrl + 'JSON/Books.json').success(function (results) {
    $scope.New = results;
});

Пожалуйста, помогите мне решить эту проблему. Моя идея о проблеме - это serviceUrl. Есть идея об этом. Огромное спасибо.. Я определенно новичок в этой Ionic Framework.

Ответ 1

Для всех, кто все еще в этой проблеме, я просто нахожу то, что его решает. Я не знаю, решит ли он вашу проблему, но она действительно решает во мне. Я использую file:///android_asset/www/ как мой serviceUrl

Итак, это пример:

var serviceUrl = 'file:///android_asset/www/';
$http.get(serviceUrl + 'JSON/Books.json').success(function (results) {
    $scope.New = results;
});

Просто попробуй и исследуй это. Я просто попробовал это, и он работал во мне.

Возможно, причина в том, что все файлы json в вашем установщике apk будут помещены в каталог file:///android_asset/www/json на Android-телефоне, поэтому пусть ваш url укажет на этот каталог.

Я надеюсь, что это поможет вам и исследовать в нем... это может быть не правильный ответ, но я надеюсь, что это поможет вам найти намек.

Спасибо

Ответ 2

Запуск serviceUrl с символом '/' делает его абсолютным URL. Он будет работать в chrome, так как root является папкой www. Но в мобильной среде кордовы он перейдет на file:///. Просто добавьте '.' ('./'), чтобы сделать его относительным путем, и он будет работать как в среде Android, так и в ios.

Ответ 3

Еще один простой способ - превратить ваш json файл в javascript файл (для статических файлов, если вы хотите обновить, используйте что-то вроде pouchdb).

например, сохраните json-документ как myjsondata.js

var mynamespace = mynamespace || {};
mynamespace.data = [{"foo":"bar"}];

то ссылайтесь на файл javascript на главной странице, где вы загружаете все остальные js файлы

<script src="js/myjsondata.js"></script>

то в вашей службе вы можете просто получить доступ к json с помощью mynamespave.data​​p >

Ответ 4

Основываясь на ответе @Datz Me, я нашел его намного проще, если вы рассматриваете приложение как веб-сервер (который есть) и запрашиваете файл как обслуживаемый им, вместо того, чтобы пытаться выяснить, как управлять различные пути к файлам между несколькими сборками.

Вот что я сделал.

Я разместил свой json файл на

www/json/app.json

Внутри я положил

{
    "title": "Application Title",
    "icon" : "custom-icon.png"
}

И в моем контроллере приложений я использовал следующий код для чтения свойств:

$http.get('json/app.json').success(function (results) {
    $rootScope.title = results.title;
    $rootScope.icon = results.icon;
});

И во всех моих дочерних контроллерах мне просто нужно добавить $rootScope в качестве зависимости, и я могу использовать

{{title}} //on headings
{{icon}} //to display the image path
<img src="{{icon}}"/> //to display the icon

В моем случае это приложение, которое будет настроено для нескольких клиентов, поэтому мне нужен был способ быстро изменить свойства приложения и сохранить их в одном месте.