Javascript - 从变量加载 json

metaModelSrc:“myfile.json” - 工作得很好,但我需要一个变量而不是 Api 接收 - 一个 json 对象。theat 意味着你可以执行 metaData.name 并且它会显示它

  • 当您将 stringify 复制粘贴到 json 文件并给出路径文件时,它正在工作。当您下载 blob 并将其作为路径 file.json 提供时,它确实有效 - 我需要从代码加载它而不下载 blob

我的错误: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

我尝试过字符串化,但没有成功;我尝试将其转换为文件,但没有成功。

  • 我已经从一个 blob 下载了它,并且给了它一个路径 metaModelSrc: "..../myfile.json" 并且它确实有效。但我需要从变量而不是路径加载它,而且我对下载 blob 不感兴趣,我需要使用从 api 获取的数据。

// 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,

    });


杨__羊羊
浏览 161回答 2
2回答

三国纷争

const&nbsp;urlTestJsonModel&nbsp;=&nbsp;URL.createObjectURL(file);metaModelSrc: urlTestJsonModel 解决了我的问题:) 谢谢大家的帮助

神不在的星期二

错误消息“Unexpected token < in JSON atposition 0”始终表示特定类型的错误起初我以为是JSON.stringify,但这当然是错误的。我们错误地将注意力集中在以下几行上:const metaDatastringify= JSON.stringify(metaData);...因此关于元数据的内容。容易出错的并不是字符串化。你可以用 JSON.stringify 几乎任何旧的废话。您的错误位于 JSON.parse 中在此期间发生错误(但此代码本身没有错误):gltfLoader.load({&nbsp; id: "fsfdsfsdfs",&nbsp; metaModelSrc: file1,&nbsp; edges: true,&nbsp; performance: true,});JSON.parse 始终期望接收一个字符串,第一个非空白字符是“{”。您的 JSON.parse 调用不在您的代码中,而是在gltfLoader.load().使用 JSON.parse 可能会遇到的麻烦示例:// Correct callJSON.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 inputJSON.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&nbsp; 'application/json'&nbsp;有人编写了“无法加载模型的模型元数据”这句话。这在 Javascript 解释器中不存在。它是在添加的一些代码模块中。有一条错误消息故意打印出来,然后显示底层的 Javascript 错误消息。问题的核心是 JSON.parse(不是JSON.stringify),它对 XML 或 HTML 字符串而不是 JSON 字符串进行操作。您确定 Javascript new File 函数实际上正在创建一个文件并将其保存在您的文件系统上吗?您告诉我们,当您放入"myfile.json"metaModelSrc 时,代码就可以工作。这意味着当代码从计算机的文件系统读取文件(即您可以在文件资源管理器或 Finder 或 Nautilus 等中看到的文件)时,代码可以正常工作。但是,我认为 javascript“新文件”功能实际上并没有将文件保存到计算机的硬盘上,不是吗?你能看看运行时是否创建了一个吗?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript