### 发生了什么?/ What happened? json格式的字段,当复制字段内容时,会自动给key、value多加上了一对双引号,造成复制出来的内容与实际存储内容不一致。如下图: <img width="1012" height="472" alt="Image" src="https://github.com/user-attachments/assets/27d37f12-7121-456c-ae47-f61ad52cc821" /> ### 如何复现?/ How can we reproduce it? _No response_ ### 版本与系统 / Version and system _No response_ ### 截图、日志或其他信息 / Screenshots, logs, or anything else _No response_
Activity
ekovovo commentedon Oct 19, 2026
最新版本已修复
feigeCode commentedon Oct 28, 2026
已在 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_format25 passed、cargo test -p one-ui --lib edit_table::tsv11 passed。升级到 v0.20.3 及以后(v0.22.0 也行)再复制一次 JSON 字段试试。
已知边界:值本身含换行(比如格式化过的多行 JSON)时,单格复制仍会加引号包裹——不加的话粘回表格会被拆成多行。如果你希望这种场景复制出去也是原文,可以另开一单,把「单格 vs 多格」的预期写清楚。
如果某个具体驱动(比如 MySQL 的 JSON 类型)还带多余符号,把它存的值和粘出来的值都贴一下,我们按驱动补类型映射。