【问题标题】:JSON Array - Extract Data With JavascriptJSON 数组 - 使用 Javascript 提取数据
【发布时间】:2013-10-18 14:30:28
【问题描述】:

我有一个非常简单的 Json 数组,我需要找回来

  • 数组中的项目数。
  • 按 id 顺序排列的条目列表。

数组如下:

{"error":false,"error_msg":"","body":
{"records":[{"name":"Application","id":1},
            {"name":"Fees Paid","id":2},
            {"name":"Evidence Verification","id":3},
            {"name":"Details QA","id":4},
            {"name":"Grade Approval","id":5},
            {"name":"Welcome Pack","id":6}]
},
"validation_errors":[]}

【问题讨论】:

  • 在数组中你的意思是在records?
  • body.records.name.length -> I need a foreach 语句按 ID 的顺序列出名称。该数组作为数据返回到函数中,因此data.body.records.name 也已尝试
  • 没有“JSON 数组”这样的东西。 JSON 是一个字符串。
  • 你只需要遍历(解析的 json 数据).records,然后使用 records[i].id 和 records.length

标签: javascript ajax arrays json


【解决方案1】:

假设您已将JSON.parsed 字符串转换为名为@9​​87654322@ 的变量,则以下语句将获取您想要的数据:

var len = jsonobj.body.records.length;
jsonobj.body.records.sort(function(a,b) {return a.id-b.id;});
// now iterate through jsonobj.body.records and they will be in ascending ID order

【讨论】:

    【解决方案2】:

    假设你的 Object 保存在变量 jObj 中,克隆 Array/Objects 以便保留原件,sort 它根据需要返回一个 Array 只包含 name 属性。

    jObj['body']['records']
        .map(function (e) {return {'id': e['id'], 'name': e['name']};}) // clone
        .sort(function (a, b) {return +a['id'] - +b['id'];})            // sort asc
        .map(function (e) {return e['name'];});                         // get names
    /* [
        "Application", "Fees Paid",      "Evidence Verification",
        "Details QA",  "Grade Approval", "Welcome Pack"
    ] */
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-25
      • 1970-01-01
      • 2021-06-13
      • 2018-06-29
      • 1970-01-01
      • 2014-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多