繁体   English   中英

如何从javascript中的值获取字符串文字(字符数组?)?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM