Skip to content

[Bug]: json格式的字段,内容复制出来后会有多余符号 #407

Closed

Description

@david830311

发生了什么?/ What happened?

json格式的字段,当复制字段内容时,会自动给key、value多加上了一对双引号,造成复制出来的内容与实际存储内容不一致。如下图:

Image

如何复现?/ How can we reproduce it?

No response

版本与系统 / Version and system

No response

截图、日志或其他信息 / Screenshots, logs, or anything else

No response

Activity

  1. ekovovo commented on Oct 19, 2026

    @ekovovo
    Contributor

    最新版本已修复

  2. feigeCode commented on Oct 28, 2026

    @feigeCode
    Owner

    已在 dev 修复,本单可以关闭。

    修复来自 @ekovovo 的 PR #412(2026-10-16 合入 main,修复提交 761bedce8),首次随 v0.20.3(2026-10-19)发布,v0.22.0 也包含——所以你在 10-19 那句「最新版本已修复」就是这么来的。

    根因:剪贴板走的是 TSV 编码路径。原先只要值里出现 " 就把整段用引号包裹、内部引号双写,JSON 这种本来就带引号的值于是被再包一层,粘到应用外就多了符号。

    修复(crates/one_ui/src/edit_table/tsv.rs 的 escape_tsv_field):触发包裹的字符从 \t \n \r " 收窄为 \t \n \r,另外只有值以 " 开头时才包裹(那才是 TSV 的语法歧义),值中间的引号当普通字符处理。于是 {"name":"张三"} 原样进剪贴板;多行/多列批量复制仍按 RFC 4180 成对转义(cdad30638 修 #355 的地基)。

    验证:crates/db_view/src/table_data/copy_format_tests.rs 与 crates/one_ui/src/edit_table/tsv_tests.rs 各补了 JSON 字段用例(json_values_copy_verbatim、escapes_only_when_needed 等);当前 dev 上 cargo test -p db_view --lib copy_format 25 passed、cargo test -p one-ui --lib edit_table::tsv 11 passed。

    升级到 v0.20.3 及以后(v0.22.0 也行)再复制一次 JSON 字段试试。

    已知边界:值本身含换行(比如格式化过的多行 JSON)时,单格复制仍会加引号包裹——不加的话粘回表格会被拆成多行。如果你希望这种场景复制出去也是原文,可以另开一单,把「单格 vs 多格」的预期写清楚。

    如果某个具体驱动(比如 MySQL 的 JSON 类型)还带多余符号,把它存的值和粘出来的值都贴一下,我们按驱动补类型映射。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions