You need to enable JavaScript to run this app. JavaScript解析JSON时如何保留整数类型键的原有顺序不被自动排序
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript解析JSON时如何保留整数类型键的原有顺序不被自动排序

解决方案

你可以利用 JSON.parse() 回调(reviver 函数)的执行特性解决问题:reviver 函数会严格按照 JSON 字符串中键的定义顺序触发,不会受 JS 对象数字键自动排序的规则影响。你只需要在解析 JSON 时提前记录下 products 下键的原始顺序,后续按这个顺序遍历渲染即可,完全不需要修改原有数据结构、键值,也不用换成数组存储。

完整实现代码

// 原始JSON字符串
const jsonStr = '{"products":{"0":"Please Select","2":"Example 1","3":"Example 2","4":"Example 3","5":"Example 4","88":"Example 5","7":"Example 6","8":"Example 7"}}';
// 用于存储products的原始键顺序
const productKeyOrder = [];

// 解析JSON时用reviver记录顺序
const res = JSON.parse(jsonStr, function (key, value) {
  // 匹配products下的子键,按JSON定义顺序存入数组
  if (Object.prototype.hasOwnProperty.call(this, 'products') && key !== 'products') {
    productKeyOrder.push(key);
  }
  return value;
});

// 按记录的原始顺序渲染option
productKeyOrder.forEach(key => {
  $('#myList').append(`<option value="${key}">${res.products[key]}</option>`);
});

方案说明

  • 没有修改任何原始数据的键值、结构,完全满足你的限制条件
  • 兼容所有支持ES5的浏览器,没有额外依赖
  • 不需要额外做JSON字符串正则匹配,逻辑稳定性更高

内容的提问来源于stack exchange,提问作者Antony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 03:24:00