我正在使用TWebHttpRequest
进行API调用,然后将响应字符串解析为TJSObject
,但是当我试图从TJSObject
获取值时,它返回为JSValue
。我需要将此JSValue
存储在 Delphi Boolean
变量中。
下面是我的代码:
LoginAPI.Execute(
procedure(AResponse: string; AReq: TJSXMLHttpRequest)
var
JS: TJSObject;
loginSuccess: Boolean;
begin
JS := TJSJSON.parseObject(AResponse);
loginSuccess := JS.Properties['loginSuccess'];
console.log(loginSuccess);
end
);
字符串
我得到以下错误:
[错误]不兼容的类型:得到“JSValue”,需要“Boolean”
当我尝试获取值并将其放入Boolean
变量时,loginSuccess := JS.Properties['loginSuccess']
上发生了此错误。
当我执行console.log(JS.Properties['loginSuccess'])
时,我可以在浏览器控制台中看到该值肯定是Boolean
。所以我只需要知道如何在 Delphi 中将其作为Boolean
获取。
我试着做了一个.AsBoolean
,但它不工作:
loginSuccess := JS.Properties['loginSuccess'].AsBoolean;
型
我得到的错误是:
[错误]“Properties:JSValue”后的非法限定符“.”
如何将JSValue
转换为Boolean
?
2条答案
按热度按时间tez616oj1#
根据pas 2 js的文档,它的布尔值可以通过与布尔值进行比较来实现:
字符串
只有当你知道你在做什么的时候才应该进行转换--但是由于JavaScript的本质,不能保证任何东西在没有任何进一步状态的情况下总是计算为
true
或false
(比如null
或undefined
)。我还没有找到它的实际定义,只有DefinedClassesWebKit.pas第168行:
型
.这意味着实际的定义在其他地方。由于
{$modeswitch}
s,我怀疑是二进制文件而不是源代码。7fyelxc52#
如果你知道属性的值肯定是
Boolean
,那么你可以像这样直接将它转换为Boolean
:字符串