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

LotusScript中NotesJSONNavigator开启PreferUTF8后字符串返回未文档化类型6问题

LotusScript JSON解析器PreferUTF8开启后字符串类型返回值6的原因

类型值6是未写入官方公开文档的UTF-8格式字符串专属类型标识,属于属性生效后的正常返回,不是解析bug:

  • 你测试得到的JSONelem_type_string = 3,对应PreferUTF8 = False时的默认字符串类型:此时解析器会自动将JSON原文中的UTF-8字符串转换为Domino原生的LMBCS(Lotus多字节字符集)编码存储,对应公开的字符串类型常量。
  • 当设置PreferUTF8 = True时,解析器会跳过LMBCS编码转换步骤,直接保留字符串的原始UTF-8字节格式存储,此时字符串节点就会返回未公开的类型值6,这个常量因为HCL官方文档更新疏漏,既没有在公开文档中标注,也没有在LotusScript的内置常量列表中暴露。

兼容写法建议

做节点类型判断时,不要仅硬编码匹配类型值3识别字符串,需要同时把值6纳入判断范围,避免逻辑异常,参考代码:

Function IsJSONString(targetElem As NotesJSONElement) As Boolean
    ' 同时兼容默认LMBCS字符串、UTF-8原生字符串两种场景
    IsJSONString = (targetElem.Type = JSONelem_type_string Or targetElem.Type = 6)
End Function

补充说明:数字、布尔、null、对象、数组类型不存在编码转换逻辑,因此这些类型的返回值不会受PreferUTF8属性开关影响,和你测试得到的结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:51:22