[英]How can I get a string literal (character array?) from a value in javascript?
我正在使用Google App Script从Google表格中抓取文本,然后将其上传到Firebase。 来自工作表的任何数据的JSON编码都添加了我不需要的额外转义字符。 我试图找出一种方法来防止这种情况,因为如果我使用字符串文字,它不会添加不必要的转义字符。
下面的这个函数就是我所说的将表格中的数据同步到firebase。 我从收集的数据中初始化一个对象,然后将其发送到Firebase数据库进行更新。
如果我保持原样, data[i][1]
的字符串最终会自动添加转义字符。如果我用任何文字字符串替换data[i][1]
(即"Testing\\n\\n-Caleb"
)该键的值保持其整个字符串不被修改。
// Gets the data from the sheet and puts it in an object.
// It is called by running the sync button in the sheet.
function sync() {
// get the spreadsheet data
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("main");
var [rows, columns] = [sheet.getLastRow(), sheet.getLastColumn()];
var data = sheet.getSheetValues(1, 1, rows, columns);
// put the data in an object
testAlert(data[1][1]); // prints "Testing
//
// -Caleb" (OK)
var obj = {}
for (var i = 1; i < data.length; i++) {
obj[i - 1] = {
Happy: data[i][0],
Meh: data[i][1], // THE VALUE OF TOPIC
//Meh: "Testing\n\n-Caleb" // THE LITERAL STRING OPTION
Down: data[i][2],
Sad: data[i][3],
Angry: data[i][4]
}
}
testAlert(obj[0].Meh). // prints "Testing
//
// -Caleb" (OK)
// convert to unused JSON object to print to the window what is happening
var jsonOBJ = JSON.stringify(obj[0].Meh)
testAlert(jsonOBJ). // prints "\"Testing\\n\\n-Caleb\"" (ERROR)
updateFirebaseData(obj, "emotions");
}
这是最后调用的函数:
// updates the firebase database with specified data and location
function updateFirebaseData(obj, loc) {
var firebaseUrl = "https://gem-0-2.firebaseio.com/";
var secret = "FirebaseSecret";
var base = FirebaseApp.getDatabaseByUrl(firebaseUrl, secret);
var result = base.updateData(loc, obj);
}
data[i][1]
是“Testing \\ n \\ n-Caleb”,当它到达数据库时,它是“\\”Testing \\ n \\ n-n-Caleb \\“”,所以转义后的字符就是我故意放置,如终点线,没有正确翻译。 但是,如果我将“Testing \\ n \\ n-n-Caleb”作为“Meh”的值,则它保持原样。
sheet.getSheetValues()
返回一个已编码为JSON的字符串。 如果要存储实际字符串,则需要使用JSON.parse()
对其进行解码。
for (var i = 1; i < data.length; i++) {
obj[i - 1] = {
Happy: data[i][0],
Meh: JSON.parse(data[i][1]), // THE VALUE OF TOPIC
Down: data[i][2],
Sad: data[i][3],
Angry: data[i][4]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.