<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>bbdrug.com content updates</title>
  <subtitle>Updates on JSON specs, querying, conversion, performance and tooling</subtitle>
  <id>https://bbdrug.com/en/feed.xml</id>
  <link rel="self" type="application/atom+xml" href="https://bbdrug.com/en/feed.xml"/>
  <link rel="alternate" type="text/html" href="https://bbdrug.com/"/>
  <updated>2026-11-07T00:00:00Z</updated>
  <author>
    <name>bbdrug.com</name>
    <uri>https://bbdrug.com/</uri>
  </author>
  <language>en</language>
  <generator uri="https://bbdrug.com/">bbdrug.com feed generator</generator>
  <entry>
    <title>Large JSON File Won&apos;t Open? Pick the Right Tool by Size</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/performance/open-large-json-files"/>
    <id>https://bbdrug.com/en/performance/open-large-json-files</id>
    <published>2026-11-07T00:00:00Z</published>
    <updated>2026-11-07T00:00:00Z</updated>
    <category term="performance" label="Performance and Security"/>
    <summary type="text">A multi-megabyte JSON export often freezes text editors and online viewers, yet parsing it takes only a few hundred milliseconds. We benchmarked a 45 MB, 500,000-record sample to measure time and memory at each stage, show why line count and node count are the real cost, and provide a size-based tool decision table covering online viewing, command-line extraction, streaming, and desktop apps.</summary>
  </entry>
  <entry>
    <title>Working with JSONL Files: Open, Convert, and Debug Bad Lines</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/formats/jsonl-file-handbook"/>
    <id>https://bbdrug.com/en/formats/jsonl-file-handbook</id>
    <published>2026-11-06T00:00:00Z</published>
    <updated>2026-11-06T00:00:00Z</updated>
    <category term="formats" label="Extended Formats and Dialects"/>
    <summary type="text">Feeding a whole .jsonl file to JSON.parse and getting an error almost never means the file is broken — it means the wrong reading strategy. This guide covers the standard ways to inspect and read JSONL line by line, the commands for converting to and from JSON arrays, a six-row table of common bad lines, and the correct way to consume JSONL from streaming HTTP responses.</summary>
  </entry>
  <entry>
    <title>JSON Schema Contract Testing: Wire Your Validation Rules into CI</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/schema/json-schema-contract-testing"/>
    <id>https://bbdrug.com/en/schema/json-schema-contract-testing</id>
    <published>2026-11-05T00:00:00Z</published>
    <updated>2026-11-05T00:00:00Z</updated>
    <category term="schema" label="Schema and Validation"/>
    <summary type="text">A finished schema is where decay begins, not where work ends: one typo silently widens validation, one refactor breaks every fixture. This guide gives a workable contract testing setup — positive, negative, and snapshot fixtures, schema-first linting, compile-once reuse, and four CI gates that turn contract breakage into a red build.</summary>
  </entry>
  <entry>
    <title>JSON to CSV: Where Headers Come From and Why Values Change</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/conversion/json-to-csv-columns"/>
    <id>https://bbdrug.com/en/conversion/json-to-csv-columns</id>
    <published>2026-11-04T00:00:00Z</published>
    <updated>2026-11-04T00:00:00Z</updated>
    <category term="conversion" label="Format Conversion"/>
    <summary type="text">Nine experiments against a real converter: the first-row-keys strategy silently drops fields, null/missing/empty all collapse into blank cells, a 20-digit integer loses precision at JSON.parse time, and dot-collision flattening merges two different keys into one column. How headers are built, which values mutate, and how to pick a strategy by downstream use.</summary>
  </entry>
  <entry>
    <title>JSON to Java Class: The Generator Gives You a Skeleton, Production Needs Five More Things</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/conversion/json-to-java-pojo"/>
    <id>https://bbdrug.com/en/conversion/json-to-java-pojo</id>
    <published>2026-11-04T00:00:00Z</published>
    <updated>2026-11-04T00:00:00Z</updated>
    <category term="conversion" label="Format Conversion"/>
    <summary type="text">A hands-on look at what a JSON-to-Java generator really emits — numbers become Double, nested objects become static inner classes, and not a single Jackson annotation is produced. Money precision, field renaming, type erasure, unknown fields, and dates are the five things you must add yourself, with copy-paste code for each.</summary>
  </entry>
  <entry>
    <title>JSON to TypeScript: Interfaces, Type Guards, and the Limits of Generation</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/conversion/json-to-typescript-interface"/>
    <id>https://bbdrug.com/en/conversion/json-to-typescript-interface</id>
    <published>2026-10-31T00:00:00Z</published>
    <updated>2026-11-04T00:00:00Z</updated>
    <category term="conversion" label="Format Conversion"/>
    <summary type="text">Generating an interface from sample JSON is half the job: optional fields, null, unions, dates and big integers need a human pass, and types do no runtime validation.</summary>
  </entry>
  <entry>
    <title>Why large integers lose precision</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/faq/json-bigint-precision"/>
    <id>https://bbdrug.com/en/faq/json-bigint-precision</id>
    <published>2026-10-30T00:00:00Z</published>
    <updated>2026-11-04T00:00:00Z</updated>
    <category term="faq" label="Frequently Asked Questions"/>
    <summary type="text">Integers above 2^53-1 lose precision in JSON.parse. Snowflake IDs, order numbers and database bigints all hit this, so keep them as strings end to end.</summary>
  </entry>
  <entry>
    <title>JSON Error Message Lookup: From Error Text Straight to the Fix</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/basics/json-error-message-lookup"/>
    <id>https://bbdrug.com/en/basics/json-error-message-lookup</id>
    <published>2026-10-30T00:00:00Z</published>
    <updated>2026-11-04T00:00:00Z</updated>
    <category term="basics" label="JSON Basics and the Specification"/>
    <summary type="text">Look up the cause by the exact JSON.parse message: 12 frequent errors across Chrome, Firefox and Safari, including HTML error pages, truncation and double parsing.</summary>
  </entry>
  <entry>
    <title>Same JSON, Four Tools, Four Results: How to Choose a JSON Formatter</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/ecosystem/json-formatter-tool-comparison"/>
    <id>https://bbdrug.com/en/ecosystem/json-formatter-tool-comparison</id>
    <published>2026-11-03T00:00:00Z</published>
    <updated>2026-11-03T00:00:00Z</updated>
    <category term="ecosystem" label="Tools &amp; Ecosystem"/>
    <summary type="text">Formatting is not lossless. Fed the same JSON with a leading zero, a BOM, or a 20-digit integer, Python, Node, jq and json.tool disagree: some raise errors, others silently rewrite the data. Ten self-run samples across four paths produce a selection table and a copy-paste strict validation script.</summary>
  </entry>
  <entry>
    <title>JSON to YAML on the Command Line: Four Traps Behind One yq Command</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/conversion/json-to-yaml-cli"/>
    <id>https://bbdrug.com/en/conversion/json-to-yaml-cli</id>
    <published>2026-11-03T00:00:00Z</published>
    <updated>2026-11-03T00:00:00Z</updated>
    <category term="conversion" label="Format Conversion"/>
    <summary type="text">The most-copied command in every tutorial, yq -P input.json &gt; output.yaml, still emits JSON on yq v4. This article benchmarks yq 4.44.6, PyYAML 6.0.3 and js-yaml on a 2.39 MB sample, explains why the input extension decides the output format, and gives correct recipes for batch conversion, quoting, indentation and big-integer precision.</summary>
  </entry>
  <entry>
    <title>Without additionalProperties, Schema Validation Validates Nothing</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/schema/schema-additional-properties"/>
    <id>https://bbdrug.com/en/schema/schema-additional-properties</id>
    <published>2026-11-02T00:00:00Z</published>
    <updated>2026-11-02T00:00:00Z</updated>
    <category term="schema" label="Schema and Validation"/>
    <summary type="text">A passing validation does not mean clean data. Pydantic ignores unknown fields by default, Zod strips them, and Ajv lets them through — hallucinated parameters and typo&apos;d keys all pass silently. This article shows the three forms of silent acceptance, then gives complete recipes for closing objects, controlling coercion, and tightening every nesting level.</summary>
  </entry>
  <entry>
    <title>Debugging Minified JSON: From line 1 column 23611 to the Exact Broken Byte</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/basics/minified-json-error-position"/>
    <id>https://bbdrug.com/en/basics/minified-json-error-position</id>
    <published>2026-11-01T00:00:00Z</published>
    <updated>2026-11-01T00:00:00Z</updated>
    <category term="basics" label="JSON Basics and the Specification"/>
    <summary type="text">A 4 MB one-line JSON file reports line 1 column 23611, which tells you nothing. Using locally measured samples, this guide explains why Python, Node and jq report three different numbers, how a character offset takes you straight to the broken byte, and which three traps silently corrupt data after the syntax is fixed.</summary>
  </entry>
  <entry>
    <title>How to fix JSON parse errors: checking Unexpected token step by step</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/basics/json-parse-error-fix"/>
    <id>https://bbdrug.com/en/basics/json-parse-error-fix</id>
    <published>2026-10-30T00:00:00Z</published>
    <updated>2026-11-01T00:00:00Z</updated>
    <category term="basics" label="JSON Basics and the Specification"/>
    <summary type="text">Turn JSON.parse errors into a line and character, then rule out six causes: trailing commas, single quotes, comments, control characters, BOM and truncation.</summary>
  </entry>
  <entry>
    <title>JMESPath for Beginners: Projection Queries That Beat JSONPath</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/query/jmespath-guide"/>
    <id>https://bbdrug.com/en/query/jmespath-guide</id>
    <published>2026-10-31T00:00:00Z</published>
    <updated>2026-10-31T00:00:00Z</updated>
    <category term="query" label="Querying and Incremental Modification"/>
    <summary type="text">JMESPath reshapes batches of objects more directly than JSONPath. This beginner guide covers syntax, projections, pipes, built-in functions and AWS CLI usage.</summary>
  </entry>
  <entry>
    <title>Binary JSON: Choosing Between MessagePack, CBOR, and BSON</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/formats/json-binary-formats"/>
    <id>https://bbdrug.com/en/formats/json-binary-formats</id>
    <published>2026-10-31T00:00:00Z</published>
    <updated>2026-10-31T00:00:00Z</updated>
    <category term="formats" label="Extended Formats and Dialects"/>
    <summary type="text">MessagePack, CBOR and BSON all compress JSON into bytes. Compare byte cost, int64 and binary handling, and get a clear line for when switching is worth it.</summary>
  </entry>
  <entry>
    <title>Choosing a JSON Diff Tool: Text Diff, Structural Diff, and Visualization</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/ecosystem/json-diff-tools"/>
    <id>https://bbdrug.com/en/ecosystem/json-diff-tools</id>
    <published>2026-10-31T00:00:00Z</published>
    <updated>2026-10-31T00:00:00Z</updated>
    <category term="ecosystem" label="Tools &amp; Ecosystem"/>
    <summary type="text">Text diff finds where files differ; structural diff decides whether contents are equivalent. Picking the right layer stops key order being mistaken for an incident.</summary>
  </entry>
  <entry>
    <title>JSON Validation in CI: A Pipeline with jsonlint, ajv, and jq</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/ecosystem/json-lint-and-validate-cli"/>
    <id>https://bbdrug.com/en/ecosystem/json-lint-and-validate-cli</id>
    <published>2026-10-31T00:00:00Z</published>
    <updated>2026-10-31T00:00:00Z</updated>
    <category term="ecosystem" label="Tools &amp; Ecosystem"/>
    <summary type="text">Syntax validation proves a file parses; schema validation proves fields follow the contract. In CI, what matters is unambiguous exit codes, error locations and repair paths.</summary>
  </entry>
  <entry>
    <title>The JSON Memory Ledger: What Strings, Objects, and Big Arrays Actually Cost</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/performance/json-memory-footprint"/>
    <id>https://bbdrug.com/en/performance/json-memory-footprint</id>
    <published>2026-10-31T00:00:00Z</published>
    <updated>2026-10-31T00:00:00Z</updated>
    <category term="performance" label="Performance and Security"/>
    <summary type="text">A 10MB JSON file can become 30-50MB in the V8 heap. Learn what strings, objects and numbers really cost, how to baseline with process.memoryUsage, and when streaming helps.</summary>
  </entry>
  <entry>
    <title>Stop Doing JSON Compression in the Wrong Order: minify vs gzip vs brotli, Measured</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/performance/json-minify-vs-gzip"/>
    <id>https://bbdrug.com/en/performance/json-minify-vs-gzip</id>
    <published>2026-10-31T00:00:00Z</published>
    <updated>2026-10-31T00:00:00Z</updated>
    <category term="performance" label="Performance and Security"/>
    <summary type="text">Minifying cuts 30-50% off raw JSON, but gzip erases most of that gain. Measured numbers across real shapes, plus the four cases where minifying makes things worse.</summary>
  </entry>
  <entry>
    <title>JSON Patch in Production: Atomicity, Idempotency, and Concurrent Conflicts</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/query/json-patch-safety"/>
    <id>https://bbdrug.com/en/query/json-patch-safety</id>
    <published>2026-10-31T00:00:00Z</published>
    <updated>2026-10-31T00:00:00Z</updated>
    <category term="query" label="Querying and Incremental Modification"/>
    <summary type="text">JSON Patch is only a change format; atomicity, idempotency and concurrency are still your job. Covers test preconditions, path escaping, rollback and ETag coordination.</summary>
  </entry>
  <entry>
    <title>Why Big JSON Trees Stutter: Virtual Scrolling and Collapse Strategies</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/performance/json-render-virtualization"/>
    <id>https://bbdrug.com/en/performance/json-render-virtualization</id>
    <published>2026-10-31T00:00:00Z</published>
    <updated>2026-10-31T00:00:00Z</updated>
    <category term="performance" label="Performance and Security"/>
    <summary type="text">Stutter starts when DOM nodes are created, not when you scroll. Covers collapse-first rendering, virtual lists, search highlighting and Worker boundaries, with metrics.</summary>
  </entry>
  <entry>
    <title>When JSON Schema Errors Make No Sense: Ajv Error Location and Message Governance</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/schema/json-schema-error-messages"/>
    <id>https://bbdrug.com/en/schema/json-schema-error-messages</id>
    <published>2026-10-31T00:00:00Z</published>
    <updated>2026-10-31T00:00:00Z</updated>
    <category term="schema" label="Schema and Validation"/>
    <summary type="text">A validator emits machine errors; users want to know which input box is wrong. Covers the Ajv errors array, instancePath versus schemaPath, grouping and wording.</summary>
  </entry>
  <entry>
    <title>Reusing JSON Schema: $ref, $defs, and allOf/oneOf Composition</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/schema/json-schema-ref-composition"/>
    <id>https://bbdrug.com/en/schema/json-schema-ref-composition</id>
    <published>2026-10-31T00:00:00Z</published>
    <updated>2026-10-31T00:00:00Z</updated>
    <category term="schema" label="Schema and Validation"/>
    <summary type="text">$ref solves reuse, allOf and oneOf solve composition, and stacking both is where things break. Covers $id, $defs, conditionals, recursion, bundling and debugging.</summary>
  </entry>
  <entry>
    <title>JSON Text Sequences (RFC 7464): Streaming JSON Delimited by RS</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/formats/json-seq-rfc7464"/>
    <id>https://bbdrug.com/en/formats/json-seq-rfc7464</id>
    <published>2026-10-31T00:00:00Z</published>
    <updated>2026-10-31T00:00:00Z</updated>
    <category term="formats" label="Extended Formats and Dialects"/>
    <summary type="text">RFC 7464 uses a 0x1E separator to stream JSON texts you can read and write at once. Covers the rules, how it differs from NDJSON, and a split-then-parse implementation.</summary>
  </entry>
  <entry>
    <title>JSON to SQL: INSERT Statements, Table Design, and Type Mapping Traps</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/conversion/json-to-sql-insert"/>
    <id>https://bbdrug.com/en/conversion/json-to-sql-insert</id>
    <published>2026-10-31T00:00:00Z</published>
    <updated>2026-10-31T00:00:00Z</updated>
    <category term="conversion" label="Format Conversion"/>
    <summary type="text">Turning JSON into SQL INSERT hides nested-table splitting, NULL versus missing, escaping and dialect gaps. Runnable statements and comparison tables for each trap.</summary>
  </entry>
  <entry>
    <title>JSON, TOML, YAML, or CSON: Choosing a Configuration Format</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/formats/json-toml-config-formats"/>
    <id>https://bbdrug.com/en/formats/json-toml-config-formats</id>
    <published>2026-10-31T00:00:00Z</published>
    <updated>2026-10-31T00:00:00Z</updated>
    <category term="formats" label="Extended Formats and Dialects"/>
    <summary type="text">Config files need comments, dates and multi-line text, which is where JSON falls short. Compare JSON, TOML, YAML and CSON, and see what conversion always loses.</summary>
  </entry>
  <entry>
    <title>Versioning JSON Contracts: Compatibility, Deprecation, and Data Migration</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/practice/json-versioning-and-migration"/>
    <id>https://bbdrug.com/en/practice/json-versioning-and-migration</id>
    <published>2026-10-31T00:00:00Z</published>
    <updated>2026-10-31T00:00:00Z</updated>
    <category term="practice" label="Engineering Practice"/>
    <summary type="text">Adding a field is not automatically safe. Covers compatibility boundaries, version fields, deprecation windows, dual-write migration, contract tests and canary metrics.</summary>
  </entry>
  <entry>
    <title>JSON Visualization Tools: Tree View, Folding, and the Trade-offs of Large Data</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/ecosystem/json-visualization-tools"/>
    <id>https://bbdrug.com/en/ecosystem/json-visualization-tools</id>
    <published>2026-10-31T00:00:00Z</published>
    <updated>2026-10-31T00:00:00Z</updated>
    <category term="ecosystem" label="Tools &amp; Ecosystem"/>
    <summary type="text">Visualization tools turn JSON into a collapsible tree. Tree rendering, large-file performance and privacy decide what each is good for, so start with where data lives.</summary>
  </entry>
  <entry>
    <title>JSONPath Filters in Depth: Recursion, Slices, and Multi-Condition Matching</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/query/jsonpath-filter-advanced"/>
    <id>https://bbdrug.com/en/query/jsonpath-filter-advanced</id>
    <published>2026-10-31T00:00:00Z</published>
    <updated>2026-10-31T00:00:00Z</updated>
    <category term="query" label="Querying and Incremental Modification"/>
    <summary type="text">Recursive descent, slices and multi-condition filters are where JSONPath gets powerful and misused. Covers filter semantics, result shapes and library differences.</summary>
  </entry>
  <entry>
    <title>Parsing, Rendering, and Streaming Large JSON</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/performance/large-json-performance"/>
    <id>https://bbdrug.com/en/performance/large-json-performance</id>
    <published>2026-10-30T00:00:00Z</published>
    <updated>2026-10-31T00:00:00Z</updated>
    <category term="performance" label="Performance and Security"/>
    <summary type="text">Parsing is often not the bottleneck; rendering and copying are. Optimize along the four layers &quot;parse → traverse → render → transport&quot; so your effort is not wasted.</summary>
  </entry>
  <entry>
    <title>Performance and Security FAQ: Slow, Janky, and Untrusted Data</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/faq/faq-performance-security"/>
    <id>https://bbdrug.com/en/faq/faq-performance-security</id>
    <published>2026-10-30T00:00:00Z</published>
    <updated>2026-10-30T00:00:00Z</updated>
    <category term="faq" label="Frequently Asked Questions"/>
    <summary type="text">Why a JSON file of tens of MB will not open, how expensive deep cloning is, how to prevent __proto__ pollution, and where XSS gets in — ten first-aid conclusions arranged by symptom.</summary>
  </entry>
  <entry>
    <title>Query and Validation FAQ: JSONPath and Schema</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/faq/faq-query-and-schema"/>
    <id>https://bbdrug.com/en/faq/faq-query-and-schema</id>
    <published>2026-10-30T00:00:00Z</published>
    <updated>2026-10-30T00:00:00Z</updated>
    <category term="faq" label="Frequently Asked Questions"/>
    <summary type="text">Whether path queries should use JSONPath or Pointer, how to choose between Patch and Merge Patch, what Schema can block, and how to pick a draft version — all explained in one pass.</summary>
  </entry>
  <entry>
    <title>Syntax and Format FAQ: Comments, Trailing Commas, and Precision</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/faq/faq-syntax-formats"/>
    <id>https://bbdrug.com/en/faq/faq-syntax-formats</id>
    <published>2026-10-30T00:00:00Z</published>
    <updated>2026-10-30T00:00:00Z</updated>
    <category term="faq" label="Frequently Asked Questions"/>
    <summary type="text">Whether comments are allowed, why a trailing comma errors, whether keys need quotes, why 9007199254740993 changes — twelve conclusions, each checked against RFC 8259.</summary>
  </entry>
  <entry>
    <title>Tool Usage FAQ: Data, Files, and Export</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/faq/faq-tool-usage"/>
    <id>https://bbdrug.com/en/faq/faq-tool-usage</id>
    <published>2026-10-30T00:00:00Z</published>
    <updated>2026-10-30T00:00:00Z</updated>
    <category term="faq" label="Frequently Asked Questions"/>
    <summary type="text">Is data uploaded, how large a file works, is anything stored locally, why Chinese turns into escapes: ten questions spelling out the real boundaries of an online JSON tool.</summary>
  </entry>
  <entry>
    <title>Team Collaboration FAQ: Contracts, Config, and Fixtures</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/faq/faq-workflow"/>
    <id>https://bbdrug.com/en/faq/faq-workflow</id>
    <published>2026-10-30T00:00:00Z</published>
    <updated>2026-10-30T00:00:00Z</updated>
    <category term="faq" label="Frequently Asked Questions"/>
    <summary type="text">Naming style, time formats, null semantics, enum shapes, config formats, fixture organization, and merge conflicts — twelve trade-offs that teams genuinely argue about.</summary>
  </entry>
  <entry>
    <title>Key Points for Designing JSON API Data Contracts</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/practice/json-api-design"/>
    <id>https://bbdrug.com/en/practice/json-api-design</id>
    <published>2026-10-30T00:00:00Z</published>
    <updated>2026-10-30T00:00:00Z</updated>
    <category term="practice" label="Engineering Practice"/>
    <summary type="text">Six things are very hard to change once shipped: response envelopes, error formats, pagination shape, representation of IDs and time, the semantics of null versus absent, and version evolution.</summary>
  </entry>
  <entry>
    <title>What structure should an API response use</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/faq/json-api-response-structure"/>
    <id>https://bbdrug.com/en/faq/json-api-response-structure</id>
    <published>2026-10-30T00:00:00Z</published>
    <updated>2026-10-30T00:00:00Z</updated>
    <category term="faq" label="Frequently Asked Questions"/>
    <summary type="text">Bare objects are clean until you need metadata; full envelopes are safe but verbose. For most projects use HTTP status for outcomes and a stable envelope for data.</summary>
  </entry>
  <entry>
    <title>Does a BOM break JSON parsing</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/faq/json-bom"/>
    <id>https://bbdrug.com/en/faq/json-bom</id>
    <published>2026-10-30T00:00:00Z</published>
    <updated>2026-10-30T00:00:00Z</updated>
    <category term="faq" label="Frequently Asked Questions"/>
    <summary type="text">A UTF-8 BOM is three invisible bytes, so JSON.parse fails on the first character and reports line 1 column 1, which makes the file look empty or truncated.</summary>
  </entry>
  <entry>
    <title>Why Chinese turns into \u4e2d\u6587</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/faq/json-chinese-unicode-escape"/>
    <id>https://bbdrug.com/en/faq/json-chinese-unicode-escape</id>
    <published>2026-10-30T00:00:00Z</published>
    <updated>2026-10-30T00:00:00Z</updated>
    <category term="faq" label="Frequently Asked Questions"/>
    <summary type="text">A \u4e2d\u6587 escape is legal Unicode, not an encoding failure. Real mojibake looks different, and telling them apart decides what you actually need to fix.</summary>
  </entry>
  <entry>
    <title>Can JSON have comments</title>
    <link rel="alternate" type="text/html" href="https://bbdrug.com/en/faq/json-comment"/>
    <id>https://bbdrug.com/en/faq/json-comment</id>
    <published>2026-10-30T00:00:00Z</published>
    <updated>2026-10-30T00:00:00Z</updated>
    <category term="faq" label="Frequently Asked Questions"/>
    <summary type="text">RFC 8259 has no comment syntax, so // and block comments make JSON.parse throw. Use JSON5 or JSONC, a _comment field, a Schema description, or YAML instead.</summary>
  </entry>
</feed>
