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

Lua中如何将文本框输入值存入变量并生成正确JSON

解决文本框输入值转JSON为空的问题

以下是几个排查和解决的关键点:

  • 确认值的获取时机
    别在程序初始化阶段就给table的p_password赋值,这时候文本框还没输入内容,自然是空值。要把赋值逻辑放在触发事件里——比如点击提交按钮时,或者文本框内容变化的回调里,确保每次需要生成JSON时,都是实时取文本框的最新值。

  • 检查文本框的取值方式
    不同UI框架获取文本内容的API不一样,你得确认Controls.Enter_Password是不是直接返回文本值。比如有些框架需要用Controls.Enter_Password.Text或者Controls.Enter_Password.GetContent()才能拿到输入内容。可以先加个打印语句验证:

    local input_pwd = Controls.Enter_Password.Text -- 替换成正确的取值API
    print("输入的密码:", input_pwd)
    

    如果打印出来是空,说明你用错了取值方法,得查对应框架的文档。

  • 保证table的动态更新
    要是你只在初始化时创建了一次table,之后没再更新p_password字段,那文本框输入变化后,table里的值还是旧的。正确的做法是每次生成JSON前,重新从文本框取值赋值:

    -- 生成JSON前实时构建table
    local request_data = {
        p_username = "admin",
        p_password = Controls.Enter_Password.Text -- 实时取最新输入
    }
    local json_result = rapidjson.encode(request_data)
    

    或者如果table是全局变量,就在文本框内容变化时同步更新:

    -- 假设文本框有内容变化的回调事件
    function OnPasswordInputChanged()
        request_data.p_password = Controls.Enter_Password.Text
    end
    
  • 排查JSON编码的特殊情况
    虽然直接赋值字符串能正常编码,但可以临时把获取到的密码存到变量里再赋值,排除中间环节的问题:

    local temp_pwd = Controls.Enter_Password.Text
    request_data.p_password = temp_pwd
    local json_str = rapidjson.encode(request_data)
    print("生成的JSON:", json_str)
    

    这样能清晰看到是取值环节还是编码环节出了问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:45:37