我有一些对象类对象的json字符串表示
public class SMPBBaseObjectsList {
public ArrayList<Object> data = new ArrayList<>();
public Integer count;
public Integer limitFrom;
public Integer limitTo;
public Boolean hasMore;
public String dataItemsClass;
}
我有json
{“classItem”:“smpb.utility.classes.SMPBBaseObjectsList”,“dataItemsClass”:“smpb.base.classes.SMPBUser”,“dataSliceCode”:“012013”,“data”:[{“id”:137404611751070000,“Name”:“Test3”,“classItem”:“smpb.base.classes.SMPBUser”,“dataSliceCode”:“012013”}],“filter”:{“orderItems”:[],“filterItems”:[]}
我尝试解析这个json并使用下一个代码创建我的类的对象:
String json = "{\"classItem\":\"smpb.utility.classes.SMPBBaseObjectsList\",\"dataItemsClass\":\"smpb.base.classes.SMPBUser\",\"dataSliceCode\":\"012013\",\"data\":[{\"id\":1374046117510970000,\"Name\":\"Test3\",\"classItem\":\"smpb.base.classes.SMPBUser\",\"dataSliceCode\":\"012013\"}],\"filter\":{\"orderItems\":[],\"filterItems\":[]}}";
SMPBBaseObjectsList list = new GsonBuilder().create().fromJson(json, SMPBBaseObjectsList.class);
System.out.println("BEFORE:" + json);
System.out.println("AFTER: " + list);
系统输出:
之前:{“classItem”:“smpb.utility.classes.SMPBBaseObjectsList”,“dataItemsClass”:“smpb.base.classes.SMPBUser”,“dataSliceCode”:“012013”,“data”:[{“id”:1374044905885298000,“Name”:“Test3”,“classItem”:“smpb.base.classes.SMPBUser”,“dataSliceCode”:“012013”}],“filter”:{“orderItems”:[],“filterItems”:[]}}
之后:{"class Item":"smpb.utility.classes.SMPBBaseObjectsList","dataItemsClass":"smpb.base.classes.SMPBUser","dataSliceCode":"012013","data":[{"Name":"Test3","id":1.374044905885298011E18,"class Item":"smpb.base.classes.SMPBUser","dataSliceCode":"012013"}],"filter":{"orderItems":[],"filterItems":[]}}
正如您在Json字符串中看到的,我的ID值为1374044905885298000,但当从字符串序列化对象时,我得到了1.374044905885298011E18
问题是,这个长时间丢失的最后0 0000的表示形式是什么,我得到了长1374044905885297920
为什么?如何修复它?
Array中的数据是String map,它已经都是Long id Double格式。
我尝试RegisterAdapter很长时间或两次,但从未触发。
Gson 2.2.4版本
更新
这不是问题的重复
如何防止Gson将长数字(json字符串)转换为科学记数法格式?
我不能确切地说出问题是什么,但您可以通过创建另一个类来解决问题,即在列表中使用数据,而不是对象类。。。我试过这个代码,它对我来说很好!
因此,您需要替换ArrayList
public ArrayList<Data> data = new ArrayList<>()
并创建如下新类:
public class Data {
public Long id;
public String Name;
public String classItem;
public String dataSliceCode;
}
我想在将JSON解析为对象时会出现问题,它可能会进行一些转换,从而导致数字格式,但不幸的是,我不是Java低级问题的专家
无论如何,使用此代码可以明确指定要将该值解析为长代码,因此没有问题!
问题内容: 在Android应用程序中,我试图从字符串中解析日期,以发现两次之间的差异。 因此,我必须进行解析,以便获得格式,因此 但是我到了 所以我在做什么错了?如何在这里解析? 问题答案: 您需要将第二个MM(月)更改为mm(分钟):
问题内容: 我试图解析一个日期字符串,它是FTP服务器上文件的修改日期。以下是代码。 我在日志中得到这个 谁能帮我这个忙吗? 问题答案: String#substring(int index) 方法的javadoc 说: 子字符串以指定索引处的字符开头,并扩展到该字符串的末尾。 这就是您遇到的问题:您没有正确使用该方法,因为调用该方法时,您会收到另一个,该字符包含一个空格作为第一个字符,这就是解析
问题内容: 我在这里有点迷路,我认为我一切都很好,但仍然无法正常工作(PaseException 帮助高度赞赏! 问题答案: 对我来说很好。 也许你可以尝试
在我的Android应用程序中,我从web服务得到了一个响应。web服务将响应返回为 也就是说,对于“ResponseData”,值要么是string要么是JSONObject。 我在用Gson进行解析。 我编写了用于解析的POJO类 注意:decodeString()方法给出了上面指定的json对象。
本实例演示了如何通过DateFormat类的parse方法根据不同的本地环境解析日期/时间字符串,并将其转换成Date对象。在最后还演示了parse方法如何解析不符合日期/时间逻辑的字符串。 例子 : 解析日期/时间字符串 实例的代码如下: package chapter8; import java.text.DateFormat; import java.util.Date; import ja
我想从格式为“2021-12-10T18:49:00-05:00”的字符串中解析带有时区的日期。我尝试使用“date('Y-m-dh:I:s',strotime($myDate))”进行解析。但这是第二天的返回日期。非常感谢您的帮助。