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

如何将条码数据保存至TextView?JSON格式条码生成问题

条码特殊字符限制与扫描解析适配方案

看起来你遇到了条码生成工具的字符限制问题——QR码因为本身支持任意文本所以没问题,但有些条码类型(比如常见的Code 39)确实对特殊字符有限制,不过咱们有两个方向可以解决这个问题:

方案一:生成支持特殊字符的条码

首先要明确:Code 128类型的条码支持所有ASCII字符,包括{、}、,这些你需要的符号。问题出在你用的在线生成工具可能默认限制了输入,或者选择了不支持特殊字符的条码类型。

你可以这么做:

  • 换一个支持Code 128且允许输入任意ASCII字符的在线条码生成器,选择Code 128类型,直接输入{"name":"Gabriel","address":"NoNameStreet"}就能生成符合要求的条码,扫描后你的现有代码就能正常解析。
  • 如果你找不到合适的在线工具,也可以用本地工具(比如一些开源的条码生成库)来生成,不过在线工具只要选对类型基本都能解决。

方案二:修改代码兼容无特殊字符的条码格式

如果实在没法生成带JSON格式的条码,咱们可以修改代码,兼容一种更简单的文本格式,比如用分隔符(比如|、;)来拆分姓名和地址,这样生成条码时只需要输入类似Gabriel|NoNameStreet的内容即可。

修改你的onActivityResult方法中的catch块,添加分隔符解析逻辑:

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
    if(result != null) {
        if (result.getContents() == null) {
            Toast.makeText(this, "Result not found", Toast.LENGTH_SHORT).show();
        } else {
            try {
                JSONObject obj = new JSONObject(result.getContents());
                textViewName.setText(obj.getString("name"));
                textViewAddress.setText(obj.getString("address"));
            } catch (JSONException e) {
                e.printStackTrace();
                // 兼容分隔符格式的解析逻辑
                String content = result.getContents();
                // 用|作为分隔符,你也可以换成其他不冲突的符号比如;
                String[] infoParts = content.split("\\|");
                if (infoParts.length == 2) {
                    textViewName.setText(infoParts[0].trim());
                    textViewAddress.setText(infoParts[1].trim());
                } else {
                    // 如果既不是JSON也不是分隔符格式,就显示原始内容
                    Toast.makeText(this, result.getContents(), Toast.LENGTH_SHORT).show();
                }
            }
        }
    }else{
        super.onActivityResult(requestCode, resultCode, data);
    }
}

这样修改后,你的APP既能兼容原来的JSON格式QR码/条码,也能兼容简单分隔符格式的条码,灵活性更高。

小提示

如果选择方案一,生成条码时一定要确认选择的是Code 128类型,不要选Code 39(它只支持数字、字母和有限的特殊符号),这样就能顺利包含JSON需要的所有字符了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:06:03