pb与互联网接口的交互
sbks 2016-05-21 10:25:17 互联网时代,以目前的主流技术,个人觉得涉及到以下三方面
一、数据生成json
这个对pb没太多难度,按json格式规格,对datastore里的数据来个循环写字符串就OK了,花不了多少时间
二、json生成记录行
这个要讲点技巧,datastore是有一个很重要的功能:依照xml格式导入数据,使用的是importstring()函数,那么,只要想办法把json生成xml文件字符串,就很快可以实现了。处理这个问题的关键是在于解析json,并拼成xml格式。这个只要理解一下xml规范与json规范,耐心一点进行字符串分析,写循环,问题也不大。因为datastore里定义xml格式很容易(有一个xml画板),所以写个公共函数转json成xml即可,然后在xml画板里把xml模板调成你生成的模板。这个也可以自己写的,不用到网上找插件
把json数据生成datastore记录行,好处非常的多。首先,很容易进行update()操作;其次,很容易进行数据业务逻辑判断。。。大家都是用pb的,就不多说了
在这部分里,要注意的是xml的保留符号的转义:<、>、&这三个符号一定要转义,不然json的值域里一旦这现这三个符号,生成在xml的值域中时,importstring()一定会报错的。什么情况下值里包含这三个符号呢?呵呵,一般没接触过是考虑不到的,我来告诉你:那就是微信用户的昵称,或者收货人的名字
三、字符串的编码转换,又细分为base64编码与utf8编码
pb在与这些编码格式打交道时,我总结出下来几点:
1.blob()函数生成的值是base64编码,用string(blob)进行解码
2.如果对方接口返回是base64的字符串的话,在pb script中使用blob来接收,然后用string()来解压。如果用string类型来接收,很快就会发现没办法用string()来解码,这时候就得找第三方的对象了,而且不好找
3.utf8与unicode之间的转码,需要使用string()函数,而string()又只能针对blob进行编码转换,所以,原始数据必须得用blob来接收,再进行转换
如果不能实现自由地进行编码转换,PB基本上就与互联网无缘了:php写的网站接口,大部分是utf8编码的,相互通讯时乱码,没搞头了
解决了这三方面的事情,很容易就与各种网站程序的接口进行交互了。小弟正是用了这三方面的知识,顺利地与微信一部分接口进行了交互。
有点拗口,不过等用上的时候仔细思考,就会明白了