马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在ubuntu中进行JSON相关学习的时间,我发现了一些小问题,决定与各人进行分享,减少踩坑时间出现不必要的时间耗费
截取部分含有JSON部分的代码进行展示
- char *str = "
- {
- "title":"JSON Example",
- "author": {
- "name":"John Doe",
- "age": 35,
- "isVerified":true
- },
- "tags":["json", "syntax", "example"],
- "rating": 4.5,
- "isPublished":false,
- "comments": null
- }";
复制代码 按照JSON格式,在引号前边都需要加上 \ 反斜杠
别的部分的代码与本次的错误分享无关,暂不截图
打开终端执行 gcc -o json_test json_test.c 下令对本测试代码进行编译
以下为在编译过程中出现的报错,
可以发现报错的部分非常的多,而且都明显的指向 \ 反斜杠这一 方面的错误

以下为全部的报错
- json_test.c: In function ‘main’:
- json_test.c:6:14: error: stray ‘\’ in program
- char *str = "
- ^
- json_test.c:6:15: warning: missing terminating " character
- char *str = "
- ^
- json_test.c:6:15: error: missing terminating " character
- json_test.c:8:5: error: stray ‘\’ in program
- "title":"JSON Example",
- ^
- json_test.c:8:6: warning: missing terminating " character
- "title":"JSON Example",
- ^
- json_test.c:8:6: error: missing terminating " character
- "title":"JSON Example",
- ^~~~~~~~~~~~~~~~~~~~~~~~~~
- json_test.c:9:5: error: stray ‘\’ in program
- "author": {
- ^
- json_test.c:9:6: warning: missing terminating " character
- "author": {
- ^
- json_test.c:9:6: error: missing terminating " character
- "author": {
- ^~~~~~~~~~~~
- json_test.c:10:5: error: stray ‘\’ in program
- "name":"John Doe",
- ^
- json_test.c:10:6: warning: missing terminating " character
- "name":"John Doe",
- ^
- json_test.c:10:6: error: missing terminating " character
- "name":"John Doe",
- ^~~~~~~~~~~~~~~~~~~~~
- json_test.c:11:5: error: stray ‘\’ in program
- "age": 35,
- ^
- json_test.c:11:6: warning: missing terminating " character
- "age": 35,
- ^
- json_test.c:11:6: error: missing terminating " character
- "age": 35,
- ^~~~~~~~~~~
- json_test.c:12:5: error: stray ‘\’ in program
- "isVerified":true
- ^
- json_test.c:12:6: warning: missing terminating " character
- "isVerified":true
- ^
- json_test.c:12:6: error: missing terminating " character
- "isVerified":true
- ^~~~~~~~~~~~~~~~~~
- json_test.c:7:5: error: empty scalar initializer
- {
- ^
- json_test.c:7:5: note: (near initialization for ‘str’)
- json_test.c:14:5: error: stray ‘\’ in program
- "tags":["json", "syntax", "example"],
- ^
- json_test.c:14:6: warning: missing terminating " character
- "tags":["json", "syntax", "example"],
- ^
- json_test.c:14:6: error: missing terminating " character
- "tags":["json", "syntax", "example"],
- ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- json_test.c:15:5: error: stray ‘\’ in program
- "rating": 4.5,
- ^
- json_test.c:15:6: warning: missing terminating " character
- "rating": 4.5,
- ^
- json_test.c:15:6: error: missing terminating " character
- "rating": 4.5,
- ^~~~~~~~~~~~~~~
- json_test.c:16:5: error: stray ‘\’ in program
- "isPublished":false,
- ^
- json_test.c:16:6: warning: missing terminating " character
- "isPublished":false,
- ^
- json_test.c:16:6: error: missing terminating " character
- "isPublished":false,
- ^~~~~~~~~~~~~~~~~~~~~
- json_test.c:17:5: error: stray ‘\’ in program
- "comments": null
- ^
- json_test.c:17:6: warning: missing terminating " character
- "comments": null
- ^
- json_test.c:17:6: error: missing terminating " character
- "comments": null
- ^~~~~~~~~~~~~~~~~
- json_test.c:18:5: error: expected identifier or ‘(’ before ‘}’ token
- }";
- ^
- json_test.c:18:6: error: stray ‘\’ in program
- }";
- ^
- json_test.c:18:7: warning: missing terminating " character
- }";
- ^
- json_test.c:18:7: error: missing terminating " character
- }";
- ^~
复制代码 对于这个问题的办理实在不难,只需要在每一行的后边加上连词符号 \ 即可,将多行拼成1行
代码做出修改后如下:
- char *str = "\
- { \
- "title":"JSON Example",\
- "author": { \
- "name":"John Doe",\
- "age": 35,\
- "isVerified":true\
- }, \
- "tags":["json", "syntax", "example"],\
- "rating": 4.5,\
- "isPublished":false,\
- "comments": null\
- }";
复制代码 再次对其进行编译,之前的报错根本消失
但是,我们发现了别的一个告诫错误
- json_test.c: In function ‘main’:
- json_test.c:8:32: warning: backslash and newline separated by space
- "title":"JSON Example",\
-
- json_test.c:14:51: warning: backslash and newline separated by space
- "tags":["json", "syntax", "example"], \
-
- /tmp/ccFimHV4.o: In function `main':
- json_test.c:(.text+0x22): undefined reference to `cJSON_Parse'
- json_test.c:(.text+0x39): undefined reference to `cJSON_GetObjectItem'
- collect2: error: ld returned 1 exit status
复制代码 同时回到text editor代码中,发现代码中反斜杠居然会出现两种颜色
这个现象很有意思,一开始并没有留意这是为什么,后边结合告诫
在这几个颜色差别的反斜杠之间瞎点,发现一个小问题
这些差别于大众的颜色的反斜杠,后边带有空格,其他的没有
尝试着将后边的空格去掉之后,再次进行编译,前边的告诫错误荡然无存
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |