Daily Tech Briefing
AI 科技速览
每天 5 分钟内学习 AI。获取最新的人工智能新闻,理解其重要性,并学习如何将其应用于您的工作。
Simon Willison · 2026/8/2 22:19:59
condense-json 1.0
AI 中文解读
核心亮点:一款能自动压缩重复JSON数据的小工具终于发布了1.0正式版,让程序员存数据更省空间。
通俗解读:简单说,这个库就像给数据做个"减肥操"。当一堆数据里反复出现相同的内容(比如"with foxes in it"这句话),它不会傻傻存好多遍,而是只存一次,别处用个特殊标记代替。需要用时再一键恢复原样。作者开发它一年半了,现在修完小毛病,正式推出。
实际影响:这项技术主要影响开发者和应用性能。它被用在AI工具LLM的日志存储中,能大幅减少数据库占用的空间,降低存储成本。对普通用户而言,你的AI应用加载数据会更快、运行更稳定,后台数据记录也不会轻易撑爆设备内存。虽然普通人不用直接触碰它,但使用AI小工具时能感受到更流畅的体验。
<p><strong>Release:</strong> <a href="https://github.com/simonw/condense-json/releases/tag/1.0">condense-json 1.0</a></p>
<p>I'm trying to get braver at releasing 1.0 versions. This little library is a year and a half old now - I've applied some sensible and non-disruptive fixes and shipped the big 1.0 for it.</p>
<p>Here's an example of what it can do, lifted from the README:</p>
<div class="highlight highlight-source-json"><pre>{
<span class="pl-ent">"foo"</span>: {
<span class="pl-ent">"bar"</span>: {
<span class="pl-ent">"string"</span>: <span class="pl-s"><span class="pl-pds">"</span>This is a string with foxes in it<span class="pl-pds">"</span></span>,
<span class="pl-ent">"nested"</span>: {
<span class="pl-ent">"more"</span>: [<span class="pl-s"><span class="pl-pds">"</span>Here is a string<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>another with foxes in it too<span class="pl-pds">"</span></span>]
}
}
}
}</pre></div>
<p>Combine that with a replacements object:</p>
<div class="highlight highlight-source-json"><pre>{<span class="pl-ent">"1"</span>: <span class="pl-s"><span class="pl-pds">"</span>with foxes in it<span class="pl-pds">"</span></span>}</pre></div>
<p>And <code>condense_json(input_json, replacements)</code> produces the following:</p>
<div class="highlight highlight-source-json"><pre>{
<span class="pl-ent">"foo"</span>: {
<span class="pl-ent">"bar"</span>: {
<span class="pl-ent">"string"</span>: {<span class="pl-ent">"$r"</span>: [<span class="pl-s"><span class="pl-pds">"</span>This is a string <span class="pl-pds">"</span></span>, {<span class="pl-ent">"$"</span>: <span class="pl-s"><span class="pl-pds">"</span>1<span class="pl-pds">"</span></span>}]},
<span class="pl-ent">"nested"</span>: {
<span class="pl-ent">"more"</span>: [<span class="pl-s"><span class="pl-pds">"</span>Here is a string<span class="pl-pds">"</span></span>, {<span class="pl-ent">"$r"</span>: [<span class="pl-s"><span class="pl-pds">"</span>another <span class="pl-pds">"</span></span>, {<span class="pl-ent">"$"</span>: <span class="pl-s"><span class="pl-pds">"</span>1<span class="pl-pds">"</span></span>}, <span class="pl-s"><span class="pl-pds">"</span> too<span class="pl-pds">"</span></span>]}]
}
}
}
}</pre></div>
<p>It scans for strings or substrings that are present in that replacements object and replaces those with a special <code>{"$r": ...}</code> syntax in the output.</p>
<p>You can reverse the effect with <code>uncondense_json(condensed, replacements)</code>.</p>
<p>The idea is to make it easier to store JSON that includes duplicated data from other related structures. I use it to save space in the SQLite logs generated by <a href="https://llm.datasette.io/">LLM</a> - see <a href="https://github.com/simonw/llm/pull/1586">PR #1586</a> for the latest iteration of that.</p>
<p>Tags: <a href="https://simonwillison.net/tags/json">json</a>, <a href="https://simonwillison.net/tags/projects">projects</a>, <a href="https://simonwillison.net/tags/python">python</a>, <a href="https://simonwillison.net/tags/llm">llm</a></p>
分享
阅读原文 ↗