首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法将API-响应转换为JSON,但它可以将其打印为字符串。

无法将API-响应转换为JSON,但它可以将其打印为字符串。
EN

Stack Overflow用户
提问于 2015-12-13 03:52:31
回答 1查看 386关注 0票数 0

我在将API的数据解析为字典时遇到了一些问题。我一直在犯错误

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.}

但如果我试图用这段代码打印出来:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if let s:NSString = String(data: data!, encoding: NSUTF8StringEncoding) {
     print(s)
}

它打印的内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
({"user":{"id":4008257,"firstname":"FIRSTNAME","lastname":"LASTNAME","role":"ROLE"},"timetable":[[{"date":"2015-11-09","lessons":[{"id":42563,"title":"SUBJECT","location":"ROOM","acronym":"TEACHER","class":"CLASS","start":"2015-11-09T08:35:00+01:00","end":"2015-11-09T09:15:00+01:00","duration":2400,"eventType":"lesson"}, {"id":...}, ...]}, {"date":"...", ...}, ...]]})

要将数据解析为字典,我使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let dict:NSDictionary = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! NSDictionary

我在这个问题上被困了好几个小时了,我想我已经尝试过各种变量类型和NSJSONReadingOptions的组合

当我使用.MutableContainers而不是.AllowFragments时,我得到的错误是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}

因此,我添加了选项.AllowFragments。

我还检查了我能够打印的字符串是否是一个有效的JSON对象。我不得不删除它周围的(),但它是有效的。所以我问提供数据的公司,如果他们犯了错误,但他们说一切正常。

有人能告诉我我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-13 03:55:57

正如错误描述的那样,"JSON文本没有以数组或对象开头“-- JSON无效,这不是您的错误代码。您可以通过将JSON粘贴到在线JSON阅读器(如http://jsonlint.com )中验证这一点--这将与iOS一样。

如果JSON的提供者不会以另一种格式提供它,那么如果第一个和最后一个字符出现故障,就必须在代码中清除它。

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

https://stackoverflow.com/questions/34250777

复制
相关文章
面试官:SpringBoot 启动时如何自动执行代码?
哈喽,我是狗哥,在日常开发中,SpringBoot项目在启动的时候需要预加载一些资源。而如何实现启动过程中执行代码,或启动成功后执行,是有很多种方式可以选择,我们可以在static代码块中实现,也可以在构造方法里实现,还可以使用@PostConstruct注解实现。
JavaFish
2022/03/15
4930
面试官:SpringBoot 启动时如何自动执行代码?
Windows 下 Python如何执行
在Windows 系统下安装好Pyton后,直接在CMD命令提示符号里 输入CD .py的文件路径, 进入.py文件的所在目录,例如 cd c:\python33\study,进入这个目录后 输入 Python .py文件名 回车就执行了.py文件。
py3study
2020/01/09
7230
Windows 下 Python如何执行
pycharm如何执行代码_pycharm如何运行代码
首先在pycharm 中的python 文件,比如:test.py,右键点击 show in explore,会弹出test.py的所在的文件夹,如图所示:
全栈程序员站长
2022/09/27
1.1K0
pycharm如何执行代码_pycharm如何运行代码
error信息显示状态下按钮按下时error不消失问题
当画面增加一个按钮,在输入框表示error状态下,按下按钮,error信息还是没有消失,即使在按下事件中已经设置了setCustomValidity()方法,还是没有起效。
repick
2021/11/25
1.5K0
error信息显示状态下按钮按下时error不消失问题
Jenkins如何执行pipeline代码
这种方式是不是很简单? 就是每次在web页面写 有点无聊,下面我们试试写成独立的文件。
苦叶子
2019/11/21
1.4K0
Jenkins如何执行pipeline代码
我的Js代码-按钮按下时判断是否选择了最后一行,给出提示
<script language="javascript"> <!-- function onsub() { //生成新月的字符串 var nian=Number(document.all("ListBox1",0).value.substring(0,4)); var yue=Number(document.all("ListBox1",0).value.substring(4,6)); if(yue==12)
用户1075292
2018/01/23
3.6K0
mysql下如何执行sql脚本
首要步骤(一般可省略): 开启mysql服务(默认是开机时就自动运行了): 控制面板-->管理工具-->服务,在里面找到名称为mysql的项,双击就可看它的服务状态是启动还是停止,把它设为启动 连接mysql: 在命令行下输入 mysql -h localhost -u root -p回车,然后输入密码即可;或直接运行mysql自
用户1258909
2018/07/03
3.4K0
php代码执行函数_php代码如何运行
大家好,又见面了,我是你们的朋友全栈君。 ** php代码执行函数解析 ** ​一、代码执行漏洞原理: 用户输入的数据被当做后端代码进行执行 <?php @eval($_REQUEST[8])?>
全栈程序员站长
2022/11/10
15.9K0
php代码执行函数_php代码如何运行
SpringBoot 启动时自动执行代码的几种方式
目前开发的SpringBoot项目在启动的时候需要预加载一些资源。如何实现启动过程中执行代码,或启动成功后执行,是有很多种方式可以选择,可以在static代码块中实现,也可以在构造方法里实现,也可以使用@PostConstruct注解实现。
鱼找水需要时间
2023/02/16
1.2K0
SpringBoot 启动时自动执行代码的几种方式
Android设备如何执行smali代码
java代码的执行需要编译成字节码文件然后借助java虚拟机JVM执行, 那么smali代码的执行同样需要借助虚拟机, 只不过是安卓虚拟机DalvikVM, 但是由于Dalvik虚拟机默认识别dex文件, 因此需要将smali文件封装成dex文件 1.创建smali文件 .class public LTest; .super Ljava/lang/Object; .method public constructor <init>()V .registers 1 invoke-di
乱码三千
2021/08/24
6290
Linux下如何快速执行历史命令
我们注意到,列出的历史命令前有一个数字,其实要想执行某个特定历史命令,只需要!+数字即可:
编程珠玑
2020/03/25
3.9K0
WPF 绑定命令在 MVVM 的 CanExecute 和 Execute 在按钮点击都没触发可能的原因
在 WPF 推荐使用 MVVM 绑定命令,但是绑定命令会存在很多坑,其中一个就是焦点的问题。如果在用户点击按钮的时候出现了焦点修改,那么此时的命令是不会被触发
林德熙
2022/08/04
2K0
视频流媒体平台如何在按需直播情况下随时调用直播视频流?
视频的播放都是需要消耗带宽及流量的,之前我们介绍过安防视频监控流媒体服务器系统对网络带宽的要求,由于有带宽及服务器的限制,在我们的流媒体平台都添加了“按需直播”的选择,以节省带宽。
EasyNVR
2020/06/16
1.2K0
JavaScript代码是如何被执行的
计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。根据语言的执行流程,可以把语言分成编译型语言和解释型语言。
木子星兮
2020/07/16
1.1K0
Spring Boot 启动时自动执行代码的几种方式
目前开发的SpringBoot项目在启动的时候需要预加载一些资源。而如何实现启动过程中执行代码,或启动成功后执行,是有很多种方式可以选择,我们可以在static代码块中实现,也可以在构造方法里实现,也可以使用@PostConstruct注解实现。 当然也可以去实现Spring的ApplicationRunner与CommandLineRunner接口去实现启动后运行的功能。在这里整理一下,在这些位置执行的区别以及加载顺序。 java自身的启动时加载方式 static代码块 static静态代码块,在类加载的
程序猿DD
2022/05/31
2K0
Spring Boot 启动时自动执行代码的几种方式
如何在 Chrome 中执行 JavaScript 代码
要在浏览器中执行 JavaScript 脚本,首先你的浏览器得支持。现在主流推荐 Chrome 浏览器,也可以使用基于 Chromium 的 Edge 浏览器。下面来介绍如何在 Chrome 中打开开发者工具,以及如何在开发者工具中运行调试 JavaScript 代码。
村雨遥
2022/03/14
6.1K0
如何在 Chrome 中执行 JavaScript 代码
CPU 是如何执行代码指令的?
现在我们拿到了指令,前四位是操作码对应的是指令表中的LOAD A指令。对应的描述是将RAM的值放入寄存器A
北洋
2023/09/21
4750
Layer 弹窗 回车执行确定按钮事件
在 layer 弹层组件中,其确认按钮需要通过鼠标点击,而在实际需求中,我们往往想要通过回车就能够执行确定按钮事件,代码如下所示:
Nian糕
2018/08/21
3.3K0
Layer 弹窗 回车执行确定按钮事件
如何使用WorkManager执行后台任务(下)
在上一文中已经了解到 WorkManager的基本用法之后,今天来看看它的一些高级用法:
阳仔
2019/07/30
7870
如何使用WorkManager执行后台任务(下)
点击加载更多

相似问题

如果后端和前端项目是分开的,如何部署它们?

33

如何使用Python并将前端和后端分开?

15

通过前端( http除外)进行后端通信

11

前端和后端不能通信

12

Kubernetes前端和后端通信

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

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