json 数组读取排序问题

今天遇到一个依赖健值数组读取排序的问题  

接口开发同事返回的json格式是这样的, 我在小程序调用接口读取数组遍历之后发现排序乱了

{
  "price_info": {
    
    "08": {
      "01": {
        "price": 9999,
        "booked": 0
      },
      "02": {
        "price": 99999,
        "booked": 0
      },
      "03": {
        "price": 99999,
        "booked": 0
      },
      "04": {
        "price": 99999,
        "booked": 0
      },
      "05": {
        "price": 99999,
        "booked": 0
      },
      "06": {
        "price": 99999,
        "booked": 0
      }
    },
    "09": {
      "01": {
        "price": "15",
        "booked": 1
      },
      "02": {
        "price": "15",
        "booked": 1
      },
      "03": {
        "price": "15",
        "booked": 0
      },
      "04": {
        "price": "15",
        "booked": 0
      },
      "05": {
        "price": "15",
        "booked": 0
      },
      "06": {
        "price": "15",
        "booked": 0
      }
    },
    "10": {
      "01": {
        "price": "15",
        "booked": 1
      },
      "02": {
        "price": "15",
        "booked": 0
      },
      "03": {
        "price": "15",
        "booked": 0
      },
      "04": {
        "price": "15",
        "booked": 0
      },
      "05": {
        "price": "15",
        "booked": 0
      },
      "06": {
        "price": "15",
        "booked": 0
      }
    }
  }
}

这是我的一个数组,price_info 健值提供是08、09、10 的排序 

在我的项目里我用for in 遍历数组也会出现排序错误

我通过https://jsoneditoronline.org/  在线解析, 发现结果变成这样了,排序的08、09 排到后面


 接着我将08,09 前面的0去掉,发现读取的顺序正常了

 解决方案

 http://w3help.org/zh-cn/causes/SJ9011 

  for-in 语句无法保证遍历顺序,应尽量避免编写依赖对象属性顺序的代码。如果想顺序遍历一组数据,请使用数组并使用 for 语句遍历。 如果想按照    定义的次序遍历对象属性

 如果遇到需要依赖对象的排序,最好采用数组形式,例如上面的json可以改为

  

{
  "price_info": [
    {"key":"08",
      "info": {
        "01": {
          "price": 9999,
          "booked": 0
        },
        "02": {
          "price": 99999,
          "booked": 0
        },
        "03": {
          "price": 99999,
          "booked": 0
        },
        "04": {
          "price": 99999,
          "booked": 0
        },
        "05": {
          "price": 99999,
          "booked": 0
        },
        "06": {
          "price": 99999,
          "booked": 0
        }
      }
    },
    {"key":"09",
      "info": {
        "01": {
          "price": 9999,
          "booked": 0
        },
        "02": {
          "price": 99999,
          "booked": 0
        },
        "03": {
          "price": 99999,
          "booked": 0
        },
        "04": {
          "price": 99999,
          "booked": 0
        },
        "05": {
          "price": 99999,
          "booked": 0
        },
        "06": {
          "price": 99999,
          "booked": 0
        }
      }
    },
    {"key":"10",
      "info": {
        "01": {
          "price": 9999,
          "booked": 0
        },
        "02": {
          "price": 99999,
          "booked": 0
        },
        "03": {
          "price": 99999,
          "booked": 0
        },
        "04": {
          "price": 99999,
          "booked": 0
        },
        "05": {
          "price": 99999,
          "booked": 0
        },
        "06": {
          "price": 99999,
          "booked": 0
        }
      }
    }
  ]
}

然后通过for 遍历,(不用 for in) 遍历出来的健值再判断使用即可

猜你喜欢

转载自blog.csdn.net/abc564643122/article/details/79731832