2016-07-31 2 views
1

Что это за объект? enter image description here Я пытаюсь создать макет данных, чтобы протестировать приложение, и вот как выглядит один из моих поддельных данных. Как я могу сохранить эти данные?Сохранить JSONObject

Я мог подумать только об использовании функции JSON.stringify и скопировать результат для сохранения в виде строки. Очевидно, что после этого я не имел бы доступа к атрибуту исходного объекта.

enter image description here

Существуют ли какие-либо способы я могу написать этот JSONObject в файл и иметь доступ к своим свойствам позже ??

ответ

0

JSON.stringify() возвращает строку. Чтобы сделать объект, вы можете получить доступ к свойствам снова, вам нужно передать эту строку через JSON.parse().

Также стоит отметить, что если объект, который вы сохраняете, имеет в нем какие-либо функции, он будет не будет сохранен.

+0

Это ТОЧНО, что я пытаюсь сделать. Я пытаюсь сохранить объект, который имеет функции в нем, и я хочу использовать эти функции позже .. Это вообще не выполнимо? – Yes

+0

Если в объекте есть функции, то, надеюсь, у него есть конструктор, который вы можете вызвать, чтобы сделать больше экземпляров. Проверьте https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor – solarshado

0

В коде obj является JavaScript Object

Вы можете использовать BLOB (https://developer.mozilla.org/en-US/docs/Web/API/Blob) и HTML5 API загрузки, чтобы сделать необходимое, как:

var json = JSON.stringify(obj); 
var blob = new Blob([json], {type: "application/json"}); 
var url = URL.createObjectURL(blob); 

var a = document.createElement('a'); 
a.download = "mydata.json"; 
a.href  = url; 
a.textContent = "Download mydata.json"; 

Вы можете загрузить данные и получить доступ к нему свойства позже используя и XMLHttpRequest запрос GET, как:

function loadJSON(callback) { 

    var getobj = new XMLHttpRequest(); 
    getobj.overrideMimeType("application/json"); 
    getobj.open('GET', 'mydata.json', true); // Replace 'mydata' with the path to your file 
    getobj.onreadystatechange = function() { 
      if (getobj.readyState == 4 && getobj.status == "200") { 
       // Required use of an anonymous callback as .open will NOT return a value but simply returns undefined in asynchronous mode 
      callback(getobj.responseText); 
      } 
    }; 
    getobj.send(null); 
} 

loadJSON(function(response) { 
    // Parse JSON string into object 
    var savedData = JSON.parse(response); 
}); 
+0

Я очень смущен – Yes

+0

Смущенный о чем? –

+0

все ... я вообще этого не понимаю – Yes

0

Использование локального хранения возможно.

localStorage.setItem("MYMockData", JSON.stringify(fakeData)); 

    var fakeDataRetrived = JSON.parse(localStorage.getItem("MYMockData")); 
Смежные вопросы