【问题标题】:How to go over JSON in JS如何在 JS 中遍历 JSON
【发布时间】:2018-11-28 20:27:49
【问题描述】:

我正在开发一个对 Django 的 Ajax 查询并且工作正常,返回正确的值,但是当我想访问该信息时,我得到了这个错误:

SyntaxError: missing name after . operator

我在 python 文件中用这些行返回了信息查询:

attributes = MyModel._meta.get_fields()
objects = MyModel.objects.all()
data = serializers.serialize('json', objects, fields=(attributes[1].name))
print(data)

return HttpResponse(data, content_type='application/json')

打印(数据)输出:

[{
  "model": "contenttypes.contenttype",
  "pk": 11,
  "fields": {
    "model": "accountingseat"}
  },
{
  "model": "contenttypes.contenttype",
  "pk": 12,
  "fields": {
    "model": "bill"
  }
}]

javascript 文件:

function functionName(param) {
  for (var i = 0; i < param.length; i++) {
    console.log(param[i]);
    console.log(param[i].pk);
    var fields = param[i]['fields'];
    for (var x = 0; x < fields.length; x++) {
      console.log(fields.[x]); //error line
    }
  }
}

console.log() 输出:

Object { model: "general.module", pk: 1, fields: { name: "General" } }

问题是我无法使用 name 访问,因为每个模型中的属性名称都发生了变化。

如何访问字段?提前致谢。

【问题讨论】:

  • fields 是一个对象。查看如何遍历对象的键/值。
  • @DacreDenny console.log(fields[x]);不要进入第二个循环
  • @FrankModica 你能告诉我如何遍历字段对象吗?我是 javascript 新手。
  • @AlbertoSanmartinMartinez 只是一个友好的提示,可以通过单击该答案旁边的“灰色勾号”来接受答案:)

标签: javascript json ajax django


【解决方案1】:

如果我正确理解了您的问题,那么可以使用Object.values() 来解决,如下所示:

function functionName(param) {
  for (var i = 0; i < param.length; i++) {
    console.log(param[i]);
    console.log(param[i].pk);

    var fields = param[i]['fields'];

    // Object.values throws expection if undefined passed so check this first
    if(fields) {

        // Access the values of the fields object if valid
        var fieldsValues = Object.values(fields);

        for (var x = 0; x < fieldsValues.length; x++) {
          console.log(fieldsValues[x]);
        }
    }
  }
}

【讨论】:

    猜你喜欢
    • 2021-07-03
    • 2023-04-08
    • 2019-08-28
    • 2012-06-07
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    相关资源
    最近更新 更多