You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript字符串转对象后无法通过点符号访问属性问题排查

问题原因与解决方案

核心问题

你的authObj实际上是数组类型,而非你期望的配置对象。虽然typeof authObj返回object(数组在JS里属于object类型),但数组没有JWT属性,所以用authObj.JWT访问会报错。

为什么会变成数组?

  1. auth.comment.match(regex)使用了g全局修饰符,返回的是所有匹配结果的字符串数组。即使你的备注里只有一个配置对象,返回的也是长度为1的数组(比如["{...配置内容...}"])。
  2. 你后续执行JSON.parse(JSON.stringify(auth.comment.match(regex))),本质是把数组转成JSON字符串再解析回来,得到的还是数组,不是目标对象。

修正代码

var auth = nms.extAccount.load(39010);
// 匹配完整的对象字面量,替换原正则避免截断问题
var regex = /{[\s\S]*}/; 
var matchResult = auth.comment.match(regex);

if (matchResult) {
  // 取第一个匹配到的字符串,直接解析为对象
  var authObj = JSON.parse(matchResult[0]);
  logInfo(authObj.JWT.endpoint); // 现在可以正常访问属性
} else {
  logInfo("未从备注中匹配到配置对象");
}

额外说明

  • 原正则/{([^;]*)}/gm存在隐患:[^;]*会在遇到分号时停止匹配,如果后续配置里出现分号,会导致解析不完整。改用{[\s\S]*}可以匹配所有字符(包括换行),确保完整捕获整个对象。
  • 如果你的备注里只有这一段配置,也可以去掉正则,直接用JSON.parse(auth.comment.trim())(前提是备注里没有其他多余内容)。

内容的提问来源于stack exchange,提问作者David Garcia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 22:25:08