惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
Blog — PlanetScale
Blog — PlanetScale
H
Help Net Security
The GitHub Blog
The GitHub Blog
博客园 - Franky
酷 壳 – CoolShell
酷 壳 – CoolShell
Recent Announcements
Recent Announcements
量子位
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
Microsoft Azure Blog
Microsoft Azure Blog
Martin Fowler
Martin Fowler
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
A
About on SuperTechFans
T
Tailwind CSS Blog
V
V2EX
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
SegmentFault 最新的问题
G
Google Developers Blog
M
MIT News - Artificial intelligence

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
How to Convert JSON to Excel - Nested JSON, NDJSON & GST
Ankur Soni · 2026-06-17 · via DEV Community

Last week a JSON-to-Excel tool quietly changed my data and I almost shipped it to a client.

I pasted an API response into the top "JSON to Excel" tool on Google, downloaded the file, and opened it - an order ID ending in ...3456 now ended in ...3400.

No error. No warning. The spreadsheet looked perfect. The data was just wrong.

That's the worst kind of bug - the silent one. You trust it, you ship it, and you find out weeks later when the numbers don't reconcile.

Then I found out why. It's not really the tool's fault. It's JavaScript.

The 10-second demo that should scare you

Open your console:

JSON.parse('{"id": 1099511627776123456}').id
// → 1099511627776123400   ❌ last digits gone

JSON.parse('{"id": 9007199254740993}').id
// → 9007199254740992      ❌ off by one

JS numbers are IEEE-754 doubles. The largest integer they hold exactly is Number.MAX_SAFE_INTEGER = 9007199254740991 (2⁵³−1). Anything bigger - 64-bit DB IDs, Discord/Twitter snowflakes, GST invoice numbers - gets rounded by JSON.parse before your converter even runs.

The kicker: even if a tool parses it right, Excel also stores numbers as float64 so it has to write the value as a text cell or the rounding comes right back. Most tools don't.

Three more traps

Leading zerosNumber("007890") is 7890. Account numbers and PINs die instantly.

Formula injection → a cell value of =1+1 (or =HYPERLINK(...)) can execute when Excel opens the file. If that JSON came from user input, it's a security hole. Safe tools write it as text.

Dates → some tools silently timezone-shift 2026-03-31 into a different value. You won't catch it unless you look hard.

The 30-second test (save this)

Paste this into any converter, open the result, check three things:

[
  { "id": 1099511627776123456 },
  { "acct": "007890" },
  { "price": 99.5 }
]

  1. Did the ID keep all 19 digits?
  2. Did 007890 keep its leading zero?
  3. Is 99.5 still a number you can SUM (not text)?

Fail any one, and you've been shipping subtly wrong spreadsheets.

Doing it right

A correct converter threads a needle: preserve unsafe values (big IDs, leading zeros) as text, but keep clean numbers numeric so you can still do math - guard formula cells, leave dates alone unless asked.

I got tired of tools that didn't, so I built one that does - client-side, so your JSON never leaves the browser (it's data; it shouldn't): jsontoexcel.in. Free, no signup, passes the test above, handles nested JSON, and even parses Indian GST returns (GSTR-2A/2B/1) that most tools choke on. It is not limited to single input format only. It handles 15-20 input formats similar to JSON/NDJSON.

In a nested-data section: "…here's how it flattens nested JSON into columns.

In a logs/data section: "…for log files, see converting NDJSON to Excel

it even handles GST returns like GSTR-2B

But seriously - whatever tool you use, run the test first. 30 seconds now beats a corrupted report later.

What's the worst silent data corruption that's bitten you? Drop it below 👇 - I'm collecting edge cases.