首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >只在生产中使用JSON SyntaxError,而不是在调试模式下

只在生产中使用JSON SyntaxError,而不是在调试模式下
EN

Stack Overflow用户
提问于 2022-05-17 00:14:03
回答 2查看 39关注 0票数 0

在我的应用程序中,我想解析保存在Asset-目录中的JSON文件。当我在本地调试模式下运行它时,我可以在没有任何问题的情况下解析该文件,但是当它在生产中运行时(由Firebase托管),我会得到以下SyntaxError:

未登录的FormatException: SyntaxError: 0位置JSON中的意外令牌<

下面是我在代码中读取文件的方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Future<String> _getEmoji() async {
  String emoji;
  if (_emojiList.isEmpty) {
    final String response = await rootBundle.loadString('data-ordered-emoji.json');
    final data = json.decode(response);
    emoji = data[Random().nextInt(data.length)];
    _emojiList = data;
  } else {
    emoji = _emojiList[Random().nextInt(_emojiList.length)];
  }
  return emoji;
}

我使用的JSON正是这个文件:https://unpkg.com/unicode-emoji-json@0.3.1/data-ordered-emoji.json

根据IntelliJ,它是用UTF-8编码的.

我在这里错过了什么?

编辑:在上面的方法中添加了一个print命令,以了解JSON看起来如何,我看到它不是我保存在Asset-目录中的JSON文件。它是构建的index.html文件。那件事怎么可能?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-17 01:07:20

解决了。问题是构建中没有包含资产目录。因此,我必须将其添加到pubspec.yaml文件中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
flutter:
  assets:
      - assets/

在build/web/assets中包含了资产目录,JSON在生产中是可用的。奇怪的是,index.html却被拿走了。

票数 0
EN

Stack Overflow用户

发布于 2022-05-17 00:25:30

对不起,我不能发表评论,所以我发布了这个答复。

json可能被打包在'<‘和’>内部,所以json解码器无法解码它.

我建议您首先打印响应并检查这个意外字符。如果有这个奇怪的字符,只需删除第一个和最后一个字符。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
String loginToken="<Hello>";
System.out.println(loginToken.substring(1, loginToken.length()-1))

输出: Hello

进一步的例子:如何使用子字符串省道

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72270415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文