本文讲解如何安全、准确地将数据库返回的 json 格式字符串(含双引号包裹的多项内容)解析为纯文本数组,并渲染为符合业务需求的无序列表,避免正则误分割导致的内容断裂。
在实际开发中,后端常以 JSON 字符串形式返回结构化数据(如 ["Item 1", "Item 2", "Item 3"]),但若前端错误地将其当作普通字符串处理,再用正则(如按逗号分割)解析,极易因字段内含逗号、引号或特殊符号而引发解析错误——正如问题中所示:"55" Smart TV, 1x Clear Writing Glass, ..." 中的逗号被错误切分,导致设备清单被拆成多行。
根本原因在于:你正在对一个本应被解析为数组的对象,执行字符串层面的脆弱正则操作。 正确做法是——信任 JSON 格式,使用标准解析器。
假设你从接口或数据库获取的是标准 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}`); // 输出符合预期的三行
});const listEl = document.getElementById('feature-list');
description.forEach(text => {
const li = document.createElement('li');
li.
textContent = text; // 自动转义,防 XSS
listEl.appendChild(li);
});若项目已引入 jQuery,可进一步简化:
$.ajax({
url: '/api/room-details',
method: 'GET',
dataType: 'json', // 关键:自动解析 JSON 响应体
success(response) {
const $list = $('#feature-list');
$list.empty(); // 清空旧内容
response.forEach(text => {
$list.append(`try {
const data = JSON.parse(rawString);
} catch (e) {
console.error('Invalid JSON received:', rawString, e);
// 降级处理或报错提示
}通过回归数据本质(JSON → Array → 渲染),而非在字符串层面“猜边界”,即可彻底规避分割错误,提升代码健壮性与可读性。