Java 调用新浪微博API int64类型 参数传入方法

在进行新浪微博数据挖掘时遇到Java无法直接使用int64类型的问题。通过尝试,发现可以将long类型的uid转换为字符串传递给API,成功避免了科学计数法导致的错误。同时,若从文本文件读取字符串参数,需要注意文件编码需为ANSI,而非UTF-8,否则也会引起错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做新浪微博数据挖掘,需要调用新浪微博的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"}

 新浪微博真是太傲娇了....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值