Gson默认将int和long型数据转换为double
StringjsonStr={"UserId":1,"UserName":"张三","Key":12345678910}Gsongson=newGson();Map<St...
String jsonStr = {"UserId":1,"UserName":"张三","Key":12345678910}
Gson gson=new Gson();
Map<String, Object> resultMap = gson.fromJson(jsonStr, new TypeToken<Map<String, Object>>(){}.getType() );
转换后 UserId=1.0,Key=1.2345678910
这个要肿么办,急!!!!!!
在线等
貌似long型数据默认还转换成16进制了
解析前的key:1362312484950
解析后的key=1.36231248495E12
这是可以直接运行的代码,各位大侠copy到机器上运行一下,看看是不是介个情况,给个回复,谢谢!
String jsonStr = "{\"UserId\":1,\"UserName\":\"张三\",\"Key\":12345678910}";
Gson gson = new Gson();
Map<String, Object> resultMap = gson.fromJson(jsonStr, new TypeToken<Map<String, Object>>(){}.getType() );
for (Iterator<String> it = resultMap.keySet().iterator(); it.hasNext();) {
String key = it.next();
System.out.println(key+":"+resultMap.get(key));
} 展开
Gson gson=new Gson();
Map<String, Object> resultMap = gson.fromJson(jsonStr, new TypeToken<Map<String, Object>>(){}.getType() );
转换后 UserId=1.0,Key=1.2345678910
这个要肿么办,急!!!!!!
在线等
貌似long型数据默认还转换成16进制了
解析前的key:1362312484950
解析后的key=1.36231248495E12
这是可以直接运行的代码,各位大侠copy到机器上运行一下,看看是不是介个情况,给个回复,谢谢!
String jsonStr = "{\"UserId\":1,\"UserName\":\"张三\",\"Key\":12345678910}";
Gson gson = new Gson();
Map<String, Object> resultMap = gson.fromJson(jsonStr, new TypeToken<Map<String, Object>>(){}.getType() );
for (Iterator<String> it = resultMap.keySet().iterator(); it.hasNext();) {
String key = it.next();
System.out.println(key+":"+resultMap.get(key));
} 展开
2个回答
展开全部
直接定义一个你的这个用户信息的类吧,不要用Object来描述数据类型
比如:
class User{
private long userId;
private String username;
private long key;
......getters & setters
}
然后用gson.fromJson(jsonStr,User.class)就可以得到user对象了。很方便
比如:
class User{
private long userId;
private String username;
private long key;
......getters & setters
}
然后用gson.fromJson(jsonStr,User.class)就可以得到user对象了。很方便
更多追问追答
追问
JSON字符串我没有贴全,因为里面有Map和List,所以必须要用object,用String的话map和list转换就有问题
追答
多个User这样的数据吗?
Type type = new TypeToken>(){}.getType() );
List users = gson.fromJson(jsonStr,type);
这样?
展开全部
你为什么要这么搞呢,搞一个结构体把所有的属性包括进去就行了。不要用object。这个和你直接使用map存有啥区别。给你个例子:
Gson gson = new Gson();
Foo foo = new Foo();
Foo foo2 = new Foo();
foo.setBar(2);
foo.setFoo(211);
System.out.println(gson.toJson(foo));
String sss = "{\"foo\":211,\"bar\":2}";
foo2 = gson.fromJson(sss, Foo.class);
System.out.println(foo2.getBar());
System.out.println(foo2.getFoo());
Gson gson = new Gson();
Foo foo = new Foo();
Foo foo2 = new Foo();
foo.setBar(2);
foo.setFoo(211);
System.out.println(gson.toJson(foo));
String sss = "{\"foo\":211,\"bar\":2}";
foo2 = gson.fromJson(sss, Foo.class);
System.out.println(foo2.getBar());
System.out.println(foo2.getFoo());
追问
唉!!!!!!蛮纠结啊,这是别人开发好的手机客户端访问接口,本来不想改的,现在看来必须要改了。
追答
当时接口就没设计好,呵呵
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询