最近在做新浪微博数据挖掘,需要调用新浪微博的API,其中要求传入的用户ID,即uid,为int64类型。
source_id | false | int64 | 源用户的UID。 |
而Java中没有int64类型,很自然地一开始考虑用long,因为用int的话 表示范围不够。
long uid = 2479449007l; 或者 long uid = 2479449007;
把uid作为参数调用API,结果报错
{"error":"parameter (source_id)'s value invalid,expect (long), but get (2.479449007E9), see doc for more info.","error_code":10017,"request":"/2/friendships/show.json"}
可以看到 Java自动把uid用科学计数法表示出来了。
怎么才能不让它自动转换成科学计数法呢,折腾了很久,一直没能如意。
最后无奈之下尝试了一下直接传入string,
string uid = " 2479449007";
发现居然可以了,看来这个API文档中尽管说要传入int64,但是直接传入string也是可以的。
BTW
如果以文本文件(txt)形式 读string 作为参数调API的话,编码格式得是ANSI,UTF-8的的话会报出如下的错误。
{"error":"parameter (source_id)'s value invalid,expect (long), but get (1978506667), see doc for more info.","error_code":10017,"request":"/2/friendships/show.json"}
新浪微博真是太傲娇了....