【问题标题】:Cloud Function parse JSON in form DataCloud Function 以数据形式解析 JSON
【发布时间】:2020-03-13 09:57:04
【问题描述】:

所以我在尝试让 JSON 解析发布在表单字段中时遇到问题。我已经记录了数据并查看了 JSON,但是当我尝试解析时,我得到了无效的令牌错误。有什么不一样的吗?

var myjson = req.body.key;
console.log('MYJSON: '+myjson);
var myjson = JSON.parse(req.body.key);
console.log('EVENT: '+myjson.eventType);

最后一个日志显示未定义。我不确定我需要做些什么不同,我曾尝试使用身体的 urlencoded,但这会产生另一个错误。只是想知道需要做些什么不同的事情。我已阅读文档并没有找到解决方案。 myjson 日志如下所示:

{"eventType":"ALERT_TRIGGER", "title":"ALERT TRIGGER: Port Errors", "text": "Alert: Inbound Port Errors for MA300XNSN5K16C - port-channel8 · *** VPC to Blade Server Switch BC1000E1R16C4C_A1 this hour is 9174 errors and Outbound Port Errors this hour is 0 errors"}

谢谢

【问题讨论】:

  • 您将 req.body.key 分配给 myjson,但随后您 parse(req.body) 代替?
  • 对不起,这是我尝试过的许多变体中的一种。我更新了现在使用的实际代码。
  • 执行console.log('MYJSON: '+myjson) 可能会产生误导。尝试做console.log('MYJSON: ', myjson),或者只是console.log(myjson),这样值的类型会影响它的外观。

标签: google-cloud-functions


【解决方案1】:

试试这个脚本(将 myjson 替换为你的,ofc)。这可能会告诉您问题出在哪里。

在这个例子中,“world”中有一个错误的引用。

const myjson = '{"hello":"beautiful worl"d"}';
let currentPart = '';
let lastValidPart = '';
console.log(myjson.length);
for (let i = 0; i < myjson.length; i++) {
  currentPart = myjson.substr(0, i);
  try {
    JSON.parse(currentPart + '"}');
    lastValidPart = currentPart;
  } catch (error) {}
}
console.log(lastValidPart);

【讨论】:

  • 我在 232 位得到了意外的令牌。不知道为什么,它可以从另一个发送 application/json 的 webhook 工作,但我试图从 Solarwinds 开始工作的那个作为表单数据发送,无法找出它发送的内容以使其失败。如果我在解析之前进行字符串化,那么它似乎可以解析,但没有一个对象是可访问的,它们显示为未定义。即myjson.eventType comes back as undefined
  • @Robert 检查那里是否有任何转义引号。也许你得到undefined,因为你最终得到的是字符串而不是对象。
  • 数据中没有引号,找不到 pos 232 处会导致意外令牌的内容。
  • 所以我正在使用另一个返回此 JSON {"eventType":"ALERT_TRIGGER", "title":"ALERT TRIGGER: Port Errors", "text": "Alert: Inbound Port Errors for Pulse SSL VPN - New York (MA003VPN01) - ext0 this hour is 0 errors and Outbound Port Errors this hour is 0 errors"} 的对象进行测试,这个对象在位置 180 上死亡,找不到会导致它的原因。
  • 我得到了它,它在文本中,我只是重新输入它并开始工作。不确定什么可以从记事本转换到盒子中,或者它是应用程序正在转换的东西,但至少我知道我对如何解析并不疯狂。感谢您的帮助
猜你喜欢
  • 2021-11-25
  • 1970-01-01
  • 2020-07-16
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-13
  • 2020-02-28
相关资源
最近更新 更多