需要将这段c++改成js代码在前段刷新accessToken
if (url.contains("token/ys7")) {
QJsonValue t = json.value("cause");
if (!t.isUndefined()) {
QJsonObject obj = t.toObject();
t = obj.value("data");
if (!t.isUndefined()) {
obj = t.toObject();
t = obj.value("accessToken");
if (!t.isUndefined()) {
m_token = t.toString();
log("token:" + m_token);
if (formUnit != NULL) formUnit->setToken(m_token);
}
}
}
}
在idea上运行不了
因为你用到了accessToken
和json
等这些有预定义结构的东东,所以除非你给出更全面的定义,别人不好进一步解答。但稍微注释转换一下还是可以的。
转换为js的伪代码:
if (url.search("token/ys7")>-1) { //js的字符串搜索,判断url中是否存在"token/ys7"
// 下面几级都是json查询结构中的元素,不过c++与js查询处理方式差异很大
myJSONobj=JSON.parse(jsonText); // 这里直接一句话就把jsonText 转换为一个js内存对象,后续查询可以据此展开,而且es6语法支持链式判断,可以直接进行查询多级对象
if (myJSONobj.cause?.data?.accessToken?){
m_token=myJSONobj.cause.data.accessToken
control.log("token:" + m_token);
if(formUnit ) formUnit.setToken(m_token); // 这里这个formUnit 需要你重新定义,而且调用方式和c++是不同的。
}
}
上面的代码需要根据实际情况(可能是全面的c++实现),来进一步完善。
用WebAssembly编译下c++代码, js就可以直接调用了, 不需要转js