贝利信息

如何正确解析并格式化带双引号的 JSON 字符串数组为有序列表

日期:2026-01-23 00:00 / 作者:心靈之曲

本文讲解如何安全、准确地将数据库返回的 json 格式字符串(含双引号包裹的多项内容)解析为纯文本数组,并渲染为符合业务需求的无序列表,避免正则误分割导致的内容断裂。

在实际开发中,后端常以 JSON 字符串形式返回结构化数据(如 ["Item 1", "Item 2", "Item 3"]),但若前端错误地将其当作普通字符串处理,再用正则(如按逗号分割)解析,极易因字段内含逗号、引号或特殊符号而引发解析错误——正如问题中所示:"55" Smart TV, 1x Clear Writing Glass, ..." 中的逗号被错误切分,导致设备清单被拆成多行。

根本原因在于:你正在对一个本应被解析为数组的对象,执行字符串层面的脆弱正则操作。 正确做法是——信任 JSON 格式,使用标准解析器

✅ 正确方案:优先使用 JSON.parse()

假设你从接口或数据库获取的是标准 JSON 字符串(注意:必须是合法 JSON,即双引号需转义、无尾逗号):

// 示例原始响应(常见于 AJAX text/plain 或未设置 dataType 的场景)
const ajaxPlainResponse = '[\"Time Usage: 9.00am - 4.00pm\", \"Rental of Commune Room 01 (7 Hours)\", \"55\\\" Smart TV, 1x Clear Writing Glass, Marker Pen, HDMI Cable, Complimentary WiFi, and Filtered Water\"]';

// ✅ 安全解析:转换为真实数组
const description = JSON.parse(ajaxPlainResponse);

// ✅ 直接遍历,每个元素已是完整字符串
description.forEach((item, index) => {
  console.log(`- ${item}`); // 输出符合预期的三行
});

? 浏览器端渲染示例(原生 JS)

    const listEl = document.getElementById('feature-list');
    description.forEach(text => {
      const li = document.createElement('li');
      li.

    textContent = text; // 自动转义,防 XSS listEl.appendChild(li); });

    ⚡ 使用 jQuery 简化(推荐用于传统项目)

    若项目已引入 jQuery,可进一步简化:

    $.ajax({
      url: '/api/room-details',
      method: 'GET',
      dataType: 'json', // 关键:自动解析 JSON 响应体
      success(response) {
        const $list = $('#feature-list');
        $list.empty(); // 清空旧内容
        response.forEach(text => {
          $list.append(`
  • ${$.text(text)}
  • `); // $.text() 确保安全插入 }); }, error(xhr) { console.error('Failed to load features:', xhr.responseText); } });

    ⚠️ 注意事项与最佳实践

    通过回归数据本质(JSON → Array → 渲染),而非在字符串层面“猜边界”,即可彻底规避分割错误,提升代码健壮性与可读性。