[英]Javascript - Load json from variable
metaModelSrc:“myfile.json” - 運行良好,但我需要一個變量而不是 Api 接收 - 一個 json 對象。 theat 意味着你可以做 metaData.name 並且它會顯示它
我的錯誤:metaModelSrc
Failed to load model metadata for model 'fsfdsfsdfs from 'application/json' - utils.loadJSON(): Failed to parse JSON response - SyntaxError: Unexpected token < in JSON at position 0
我嘗試過字符串化,但沒有用,我嘗試將其轉換為文件,但沒有用。
// metaData - json object from api
const metaDatastringify= JSON.stringify(metaData);
var file = new Blob([metaDatastringify], {type: 'application/json'});
var file1 = new File([file], "name", {type: 'application/json'});
gltfLoader.load({
id: "fsfdsfsdfs",
metaModelSrc: file1,
edges: true,
performance: true,
});
const urlTestJsonModel = URL.createObjectURL(file);
metaModelSrc: urlTestJsonModel 解決了我的問題 :) 謝謝大家的幫助
起初我以為是JSON.stringify
,但當然這是錯誤的。 我們將注意力放在以下行上是錯誤的:
const metaDatastringify= JSON.stringify(metaData);
...因此在元數據的內容上。
容易出錯的不是字符串化。 您可以 JSON.stringify 幾乎所有舊的廢話。
在此期間發生錯誤(但此代碼本身沒有錯誤):
gltfLoader.load({
id: "fsfdsfsdfs",
metaModelSrc: file1,
edges: true,
performance: true,
});
JSON.parse 總是期望接收一個字符串,第一個非空白字符是“{”。
您的 JSON.parse 調用不在您的代碼中,而是在gltfLoader.load()
的代碼中。
您可以使用 JSON.parse 獲得的困擾示例:
// Correct call
JSON.parse('{"a":3, "b":"hello"}')
{a: 3, b: "hello"}
// Forget the quotation marks around "a"
JSON.parse(' {a:"<html>skdjfhskdf</html> "}')
Uncaught SyntaxError: Unexpected token a in JSON at position 2
// Use wrong quotation marks (JSON.parse insists on double-quotes for each key. (I have put this error message as two single quotes, to stop stack overflow turning everything that follows into a comment, but it will appear as only one single quote.)
JSON.parse(" {'a':'<html>skdjfhskdf</html> '}")
Uncaught SyntaxError: Unexpected token '' in JSON at position 2
// Empty string input
JSON.parse("")
Uncaught SyntaxError: Unexpected end of JSON input
// Undefined - watch out for this one which is completely baffling the first time it happens! I think it is converting undefined into "undefined" for some reason?
JSON.parse(undefined)
Uncaught SyntaxError: Unexpected token u in JSON at position 0
// Feed in an HTML or XML string, i.e. something starting with an "<"
JSON.parse("<html>Hello</html>")
Uncaught SyntaxError: Unexpected token < in JSON at position 0
這是您獲得的最后一種類型。 因此,在gltfloader.load()
運行期間,JSON.parse 語句以某種方式接收 XML 或 HTML 格式的數據項。
服務器實際以該格式發送數據,或者它正在發送錯誤消息,例如 404 頁面。
除了通過gltfloader
之外,您是否有任何方式通過 javascript 閱讀該頁面?
你有沒有考慮過把它當作一個文本文件來閱讀(通過 javascript,而不是通過手動路徑並保存它),看看你得到了什么?
它是預期的 JSON 字符串還是其他內容? 我敢打賭是后者。
無法從“應用程序/json”加載模型“fsfdsfsdfs”的模型元數據 - utils.loadJSON(): 解析 JSON 響應失敗 - SyntaxError: Unexpected token < in JSON at position 0
分解如下。
最后一部分由 Javascript 發布:
utils.loadJSON(): Failed to parse JSON response - SyntaxError: Unexpected token < in JSON at position 0
前面的部分是由不是Javascript 解釋器的代碼故意發出的。
Failed to load model metadata for model 'fsfdsfsdfs from 'application/json'
有人對“無法加載模型的模型元數據”這句話進行了編碼。 這在 Javascript 解釋器中不存在。 它是在一些代碼模塊中添加的。 有一條錯誤消息故意打印出來,然后顯示底層 Javascript 錯誤消息。
問題的核心是對 XML 或 HTML 字符串而不是 JSON 字符串進行操作的 JSON.parse(而不是JSON.stringify)。
您告訴我們,當您將"myfile.json"
放入 metaModelSrc 時,代碼會起作用。 這意味着代碼在從計算機的文件系統(即您可以在文件資源管理器、Finder 或 Nautilus 等中看到的文件)讀取文件時可以正常工作。
但是,我認為javascript“新建文件”功能實際上並沒有將文件保存到您的計算機硬盤上,是嗎? 運行的時候能不能看看有沒有創建?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.