У меня есть файл с именем .json wordsAndMeaning.jsonAppend JSON значение ключа пара в .json файл Titanium
{
"words" : [
{
"name" : "Apple",
"meaning" : "A fruit"
},
{
"name" : "Truck",
"meaning" : "A heavy vehicle"
},
{
"name" : "Zebra",
"meaning" : "An animal"
},
{
"name" : "Rock",
"meaning" : "A music Genre"
}
]
}
У меня есть два текстовых поля в моем окне, которое принимает имя и значение имени и отправить кнопку.
Что я хочу сделать, это заполнить текстовые поля и нажать «Отправить» (например, addEventListener), я хочу, чтобы введенные данные были добавлены в новую пару ключ-значение в вышеупомянутый файл wordsAndMeanings.json.
wordsandMeanings.json файл существует в resourceDirectory, и я использую fileSystem для его реализации.
Я новичок в концепции JSON. так что подробное объяснение с кодом будет оценено по достоинству. Я выполняю эту задачу в Titanium.
Я положу весь свой код app.js ниже
var window = Ti.UI.createWindow();
var view1 = Titanium.UI.createView({
backgroundcolor:'21DCEE'
});
var view2 = Titanium.UI.createView({});
var textName = Titanium.UI.createTextField({
top:100,
left:50,
height:50,
width:150,
borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED,
hintText:'Enter the word'
});
var textMeaning = Titanium.UI.createTextField({
top: 200,
left:50,
width:150,
height:50,
borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED,
hintText:'Enter its meaning'
});
var submit = Titanium.UI.createButton({
top:300,
left:100,
title:'Submit'
});
var tableView = Ti.UI.createTableView();
var tableData = [];
var fileName = 'wordsAndMeanings.json';
var file = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, fileName);
var preParseData = file.read();
var response = JSON.parse(preParseData);
Ti.API.info(response.words.length);
for(var i = 0; i < response.words.length ; i++){
word = response.words[i];
row = Ti.UI.createTableViewRow({
height : '60dp'
});
nameLabel = Ti.UI.createLabel({
text: word.name,
font: { fontSize:'24dp', fontWeight:'bold'},
height:'auto',
left:'10dp',
color:'#000',
touchEnabled : false
});
row.add(nameLabel);
tableData.push(row);
tableView.setData(tableData);
}
var add = Titanium.UI.createButton({
title: 'Add',
top: 150,
left: 50
});
add.addEventListener('click',function(e){
window2 = Titanium.UI.createWindow({
backgroundColor:'8FD2ED'
});
submit.addEventListener('click', function(e){
//response.words.push({"name" : "abc", "meaning" : "alphabets"});
//Ti.API.info(typeof(textName.value));
//var one = JSON.parse(textName.value);
//Ti.API.info(one);
var obj = eval("(textName.value)");
Ti.API.info(obj);
//var file2 = Titanium.FileSystem.getFile(Titanium.FileSystem.resourcesDirectory,'wordsAndMeanings.json');
//file2.write()
});
window2.open();
window2.add(view2);
view2.add(textName);
view2.add(textMeaning);
view2.add(submit);
});
window.open();
window.add(view1);
view1.add(tableView);
view1.add(add);
В соответствии с [ссылка] (https://wiki.appcelerator.org/display/guides/Filesystem+Access+and+Storage) resourcesDirectory поддерживает чтение и запись на тренажере/EMULATOR. Я работаю над симулятором, а не на самом устройстве. А также мне нужно написать ** текстовое поле ** данных (например, textName и textMeaning) в .json-файл, как я могу извлечь эти данные и записать их в файл в качестве новой пары ключ-значение? –