亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Javascript - 從變量加載 json

Javascript - 從變量加載 json

楊__羊羊 2023-06-29 15:53:56
metaModelSrc:“myfile.json” - 工作得很好,但我需要一個變量而不是 Api 接收 - 一個 json 對象。theat 意味著你可以執行 metaData.name 并且它會顯示它當您將 stringify 復制粘貼到 json 文件并給出路徑文件時,它正在工作。當您下載 blob 并將其作為路徑 file.json 提供時,它確實有效 - 我需要從代碼加載它而不下載 blob我的錯誤:metaModelSrcFailed 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我嘗試過字符串化,但沒有成功;我嘗試將其轉換為文件,但沒有成功。我已經從一個 blob 下載了它,并且給了它一個路徑 metaModelSrc: "..../myfile.json" 并且它確實有效。但我需要從變量而不是路徑加載它,而且我對下載 blob 不感興趣,我需要使用從 api 獲取的數據。// metaData - json object from apiconst 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,    });
查看完整描述

2 回答

?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

const urlTestJsonModel = URL.createObjectURL(file);

metaModelSrc: urlTestJsonModel 解決了我的問題:) 謝謝大家的幫助


查看完整回答
反對 回復 2023-06-29
?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

錯誤消息“Unexpected token < in JSON atposition 0”始終表示特定類型的錯誤

起初我以為是JSON.stringify,但這當然是錯誤的。我們錯誤地將注意力集中在以下幾行上:


const metaDatastringify= JSON.stringify(metaData);

...因此關于元數據的內容。


容易出錯的并不是字符串化。你可以用 JSON.stringify 幾乎任何舊的廢話。


您的錯誤位于 JSON.parse 中

在此期間發生錯誤(但此代碼本身沒有錯誤):


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 頁面。


您是否有任何方式通過 javascript 讀取該頁面,就像 via 之外的任何其他格式一樣gltfloader?


您是否考慮過像文本文件一樣讀取它(通過 javascript,而不是通過手動路徑并保存),然后看看您會得到什么?


是預期的 JSON 字符串,還是其他什么?我敢打賭是后者。


具體來說,我們可以看到錯誤消息不是來自Javascript,而是來自您編寫或引入的代碼

無法從“application/json”加載模型“fsfdsfsdfs”的模型元數據 - utils.loadJSON():無法解析 JSON 響應 - SyntaxError:位置 0 處的 JSON 中出現意外標記 <


將其分解如下。


最后一部分是由 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 錯誤消息。


問題的核心是 JSON.parse(不是JSON.stringify),它對 XML 或 HTML 字符串而不是 JSON 字符串進行操作。


您確定 Javascript new File 函數實際上正在創建一個文件并將其保存在您的文件系統上嗎?

您告訴我們,當您放入"myfile.json"metaModelSrc 時,代碼就可以工作。這意味著當代碼從計算機的文件系統讀取文件(即您可以在文件資源管理器或 Finder 或 Nautilus 等中看到的文件)時,代碼可以正常工作。


但是,我認為 javascript“新文件”功能實際上并沒有將文件保存到計算機的硬盤上,不是嗎?你能看看運行時是否創建了一個嗎?


查看完整回答
反對 回復 2023-06-29
  • 2 回答
  • 0 關注
  • 199 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號