Skip to content

Conversation

imba-tjd
Copy link
Contributor

@imba-tjd imba-tjd commented Sep 3, 2018

暂时只看了前两章的教程 要不等我全看完算了 除了第八章,其他的都看完了。请叶老师看看我修改的。如果有不合适的可以讨论一下或者revert掉。

Contributors很少啊,都是误操作的_(:з」∠)_


没有判断解析Object的Key时的返回值的测试呢……
代码中用的是判断第一个有效字符不是引号则返回MissKey,解析string失败则返回对应的错误代码。
我做出来的效果是:解析失败或者解析成功但类型不是string时返回MissKey
这个测试需要增加嘛?就用原来的例子就好了,两边加上花括号:

TEST_ERROR(LEPT_PARSE_MISS_QUOTATION_MARK, "{\"a:1}");
TEST_ERROR(LEPT_PARSE_INVALID_STRING_ESCAPE, "{\"\\v\":1}");
TEST_ERROR(LEPT_PARSE_INVALID_STRING_CHAR, "{\"\x01\":1}");

第七章lept_stringify的示例和实际的不一样啊……
不是说直接返回 JSON 的字符串嘛。下面的生成null、false和true也不一样。搜索了一下,所有的代码里都没有LEPT_STRINGIFY_OK,只有这个md文件里有。


第七章解答中,ch < 0x20的输出用的是大写的X:sprintf(buffer, "\\u%04X", ch);,而且下面写:

注意到,十六进位输出的字母可以用大写或小写,我们这里选择了大写,所以 roundtrip 测试时也用大写。但这个并不是必然的,输出小写(用 "\u%04x")也可以。

但是对数字的roundtrip测试用的是小写,解析的代码虽然也是生成的小写"%.17g",两者不一致不好。实际上对ch < 0x20是没有测试的。


TEST_ROUNDTRIP("-0");是否需要提几句?"-0"用strtod转换成double貌似确实是-0,但是我用C#好像有点难做……我只能想到单独记录符号……


GitHub不能渲染Latex呢。有三处,在第八篇里。

我们可以提供一个函数,简单地用线性搜寻实现这个查询功能(时间复杂度 $\mathrm{O}(n)$


最后一项事情就是我在我的第二章的issue里提议的一些东西。

@imba-tjd imba-tjd changed the title Make some improvements [WIP] Make some improvements Sep 7, 2018
@imba-tjd imba-tjd changed the title [WIP] Make some improvements Make some improvements Sep 9, 2018
@miloyip miloyip merged commit 79d6f6a into miloyip:master Nov 28, 2018
@miloyip
Copy link
Owner

miloyip commented Nov 28, 2018

感谢

wuxiaoweisjz pushed a commit to wuxiaoweisjz/json-tutorial that referenced this pull request Jun 7, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants