关于最新的 C# SDK 7.2.14 的开放 JSON 解析器的看法

周末看到七牛的 C# SDK 更新了(貌似最近更新得很频繁啊),重点是看到:开放了 JSON 解析器。

赞一个!

但是,从源码来看,只是增加了一个 JsonHelper 的类,里面有一个静态方法(反序列化),这个是什么意思呢?是继承重写吗?

貌似……还是不能摆脱需要引用 Json.NET 类库的命运。

周末没事,根据 7.2.14 版本的源码,简单实现了一遍开放 JSON 解析器的方式,同时,也实现了我这边需要的几个方法(其它的类似于 CDN 的相关方法都没有实现),已经通过了和七牛的服务器进行的交互测试。

我是按照我的想法来实现这个 JSON 解析的,目的就是避免为了使用七牛的组件,单独引用原本没有用到的第三方类库(我这里用的是 Jil,没有用到 Json.NET)。

点击查看源码(Github)

阅读 2.2k
2 个回答

我的想法是:既然七牛的 SDK 是开源组件,那么,在 SDK 中用到了第三方组件,就应该尽可能的持有开放的心态来实现相应的功能,不能拘泥于某一个第三方的组件功能。

多说一句,我写我需要的这个 SDK 的时候,觉得有些地方的代码还可以适当的再优化一下(目前我只涉及了很小一部分代码)。另外就是,从程序架构上面,也可以适当考虑考虑(貌似还没有看到多少架构的思想在里面,就是单纯的实现一个个的方法。我只是针对 C# 这个 SDK 来说的,其它语言的代码,暂时没有看)。

七牛大牛那么多,Code Review 这个工作还是应该多做做,哈哈。

可能是我的强迫症犯了,如果有冒犯的地方,还请谅解。

感谢您的反馈。

其实,这个所谓的“开放JSON解析器”只是从源码的角度“开放”,而不是程序集角度的开放。

首先,增加这部分的目的不是为了摆脱Json.NET,而是为了增加更多的选择,或者说,让用户自定义JSON解析器时略微方便一点:修改源码中的JsonHelper中的JsonDeserialize函数,选用合适的第三方库或者自行实现。

其次,因为SDK中很多函数内部都需要调用JSON解析器,甚至会多次调用(比如分片上传UploadFile),所以这个JsonHelper是在源码阶段就封装好的——它引用到了Json.NET。当然,也可以尝试从程序集角度(比如Extension方式等)来“开放它”,但这样就需要考虑更多的问题。所以又回到前面说到的:从源码修改它。

某些需求可能需要斟酌,有时候为了增加一些东西会迫使我们放弃一些别的东西,或者折衷。总之,好的建议与反馈,我们都会仔细考量并尽快引入到SDK更新。

btw,感谢最后面贴上来的代码,它是一个很好的参考。

logo
七牛云问答
子站问答
访问
宣传栏