相关疑难解决方法(0)

带有冒号分隔符的时区的Java SimpleDateFormat?

我有以下格式的日期: 2010-03-01T00:00:00-08:00

我在它上面抛出了以下SimpleDateFormats来解析它:

private static final SimpleDateFormat[] FORMATS = {
        new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"), //ISO8601 long RFC822 zone
        new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz"), //ISO8601 long long form zone
        new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"), //ignore timezone
        new SimpleDateFormat("yyyyMMddHHmmssZ"), //ISO8601 short
        new SimpleDateFormat("yyyyMMddHHmm"),
        new SimpleDateFormat("yyyyMMdd"), //birthdate from NIST IHE C32 sample
        new SimpleDateFormat("yyyyMM"),
        new SimpleDateFormat("yyyy") //just the year
    };
Run Code Online (Sandbox Code Playgroud)

我有一个方便的方法,使用这样的格式:

public static Date figureOutTheDamnDate(String wtf) {
    if (wtf == null) {
        return null;
    }
    Date retval = null;
    for (SimpleDateFormat sdf : FORMATS) {
        try {
            sdf.setLenient(false)
            retval = sdf.parse(wtf); …
Run Code Online (Sandbox Code Playgroud)

java date iso8601

60
推荐指数
6
解决办法
18万
查看次数

如何为Gson编写自定义JSON反序列化器?

我有一个Java类,用户:

public class User
{
    int id;
    String name;
    Timestamp updateDate;
}
Run Code Online (Sandbox Code Playgroud)

我收到一个包含来自Web服务的用户对象的JSON列表:

[{"id":1,"name":"Jonas","update_date":"1300962900226"},
{"id":5,"name":"Test","date_date":"1304782298024"}]
Run Code Online (Sandbox Code Playgroud)

我试图编写一个自定义反序列化器:

@Override
public User deserialize(JsonElement json, Type type,
                        JsonDeserializationContext context) throws JsonParseException {

        return new User(
            json.getAsJsonPrimitive().getAsInt(),
            json.getAsString(),
            json.getAsInt(),
            (Timestamp)context.deserialize(json.getAsJsonPrimitive(),
            Timestamp.class));
}
Run Code Online (Sandbox Code Playgroud)

但我的解串器不起作用.如何为Gson编写自定义JSON反序列化器?

java json gson deserialization

47
推荐指数
2
解决办法
7万
查看次数

从String解析时,Gson Long丢失了数据

我有一些对象类对象的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;
}
Run Code Online (Sandbox Code Playgroud)

我有json

{ "classItem": "smpb.utility.classes.SMPBBaseObjectsList", "dataItemsClass": "smpb.base.classes.SMPBUser", "dataSliceCode": "012013"​​, "数据":[{ "ID":1374046117510970000"名称 ":" Test3" 的, "classItem": "smpb.base.classes.SMPBUser", "dataSliceCode": "012013"​​}], "过滤器":{ "的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);
Run Code Online (Sandbox Code Playgroud)

系统输出:

BEFORE: {"classItem":"smpb.utility.classes.SMPBBaseObjectsList","dataItemsClass":"smpb.base.classes.SMPBUser","dataSliceCode":"012013"​​,"data":[{ "id":1374044905885298000, "名称": "Test3的", "classItem": "smpb.base.classes.SMPBUser", "dataSliceCode": "012013"​​}], "过滤器":{ "的OrderItems":[], "filterItems":[ …

java gson

5
推荐指数
1
解决办法
2003
查看次数

标签 统计

java ×3

gson ×2

date ×1

deserialization ×1

iso8601 ×1

json ×1