【问题标题】:json nested arrays errorjson嵌套数组错误
【发布时间】:2015-04-04 20:13:36
【问题描述】:

嘿,在我开始主要问题之前,我应该说明 .json 文件是与 .html 文件位于同一文件夹中的外部文件。我不知道它是否有帮助,但我是 json 新手。
我的问题是 1) 为什么 jsfiddle 在"papadopoulos_antonis": [{
"papadopoulos_stauros":=[{ 抛出错误 "maria_anagnostou":= [{ 2)<link src=.../>读取json文件对吗?

谢谢

//this is in a json external file.the file is in the same folder with other html files
   users = [

"papadopoulos_antonis": [{
fname: 'Παπαδόπουλος Αντώνης',
field1: 'Συντήρηση Αυτοκινήτου',
field2: 'Ορειβατικός εξοπλισμός',
field3: 'Μάθημα Καράτε',
field4: ''
}],

"papadopoulos_stauros":[{
fname: 'Παπαδόπουλος Σταύρος',
field1: 'Αναψυκτικά',
field2: 'Αλκοολούχα ποτά',
field3: 'Εξοδα καυσίμων',
field4: ''
}],

"maria_anagnostou": [{
fname: 'Αναγνώστου Μαρία',
field1: 'Διαφήμιση επιχείρησης',
field2: 'Τεχνικός επιχείρησης',
field3: 'Μηχανικός επιχείρησης',
feild4: ''
}] 
]


function jsonObjs(select) {
  
  var = JSONobject = JSON.parse(users);
  alert(users.papadopoulos_antonis[fname]);
  if (select == 1) {
    alert(users.papadopoulos_antonis[fname]);
  } else if (select == 2) {
    alert(users.papadopoulos_stauros[fname]);
  } else if (select == 3) {

  }
}
<link src="formMembers.json" type="text/javascript"/>


    <select id="selectCategory" onchange="jsonObjs(this)">
        <option>Επιλογή...</option>
        <option>Παπαδόπουλος Αντώνης</option>
        <option>Παπαδόπουλος Σταύρος</option>
        <option>Αναγνώστου Μαρία</option>
    </select>

【问题讨论】:

  • fname: 'Αναγνώστου Μαρία'. . 而不是 ,
  • “这是在一个 json 外部文件中” 那不是有效的 JSON。它只是一个包含 JavaScript 的文件。 “使用&lt;link src=.../&gt; 读取json 文件是否正确?” 不,JavaScript 是通过&lt;script&gt; 标签包含的。 (真实)JSON 文件不能通过 HTML 标签包含。
  • 我认为你应该更多地了解 JavaScript 中的数组和对象:developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/…
  • 如果没有链接标签怎么办?
  • 正如我所说,您不能通过 HTML 包含 JSON 文件。但是,您没有 JSON,只有 JavaScript,所以只需使用 &lt;script&gt; 元素。

标签: javascript json


【解决方案1】:

JSON.parse 无效的 JSON 将不起作用。

users = [ 是一个数组,数组应该如下所示:

users = ["val", "val", "val"]

你有:

users = [prop:"val", prop:"val", prop:"val"]

应该是一个对象:

users = {prop:"val", prop:"val", prop:"val"} // Plain Object (not valid JSON)

修正你的.>>>,错字。
对于有效的 JSON,请使用双引号:

{
    "papadopoulos_antonis": {
        "fname": "ΠαπαδόπουλοςΑντώνης",
        "field1": "ΣυντήρησηΑυτοκινήτου",
        "field2": "Ορειβατικόςεξοπλισμός",
        "field3": "ΜάθημαΚαράτε",
        "field4": ""
    },
    "papadopoulos_stauros": {
        "fname": "ΠαπαδόπουλοςΣταύρος",
        "field1": "Αναψυκτικά",
        "field2": "Αλκοολούχαποτά",
        "field3": "Εξοδακαυσίμων",
        "field4": ""
    },
    "maria_anagnostou": {
        "fname": "ΑναγνώστουΜαρία",
        "field1": "Διαφήμισηεπιχείρησης",
        "field2": "Τεχνικόςεπιχείρησης",
        "field3": "Μηχανικόςεπιχείρησης",
        "feild4": ""
    }
}

// 有效 JSON http://jsonlint.com/

要获取您的 JSON 文件,请参阅:Get JSON data from external URL and display it in a div as plain text

如果你想把你的“JSON”当成一个 JS 对象,你可以使用

<script src="myJson.js"></script>
<script>
    console.log(users); // Works
</script>

【讨论】:

  • 它仍然不是 JSON,所以JSON.parse(users) 会抛出,&lt;link src=.../&gt; 也不起作用。
  • @FelixKling 很好,有效的 JSON 见上文
  • 为了明确我想要一个 json 文件,所以也许
  • @MilsZ 不,链接不正确。使用 AJAX 或 JSONP。我将在演示中向您展示
  • 问题是我只有 4 个小时来解决这个问题并做其他事情,直到项目完成,我没有时间阅读这么多东西......但是 json 是正确的,但在函数中抛出错误jsonObjs(select) { ---expected '(End)' 而是显示函数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 2022-01-16
  • 2014-01-28
  • 2013-07-28
相关资源
最近更新 更多