首页 > 解决方案 > PharmCAT:日期上的 JsonSyntaxException

问题描述

我正在用 Java 运行一些分析工具来进行 WES 分析。所以,我可以被认为是 Java 的新手 :( 顺便说一句,我使用 PharmCAT 来分析我的 VCF 文件。但我得到了这个错误:

com.google.gson.JsonSyntaxException:2018 年 4 月 24 日 12:00:00 AM

我找到了一个关于这个错误的主题,但由于我对 Java 的限制,我不知道如何解决我的问题。这是我的命令:

$ java -cp PharmCAT/build/pharmcat-0.7.0-all.jar org.pharmgkb.pharmcat.haplotype.NamedAlleleMatcher -vcf path/to/my/vcf -json output.json

它的追溯:

com.google.gson.JsonSyntaxException: Apr 24, 2018 12:00:00 AM
    at com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate(DateTypeAdapter.java:74)
    at com.google.gson.internal.bind.DateTypeAdapter.read(DateTypeAdapter.java:59)
    at com.google.gson.internal.bind.DateTypeAdapter.read(DateTypeAdapter.java:41)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:129)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220)
    at com.google.gson.Gson.fromJson(Gson.java:887)
    at com.google.gson.Gson.fromJson(Gson.java:825)
    at org.pharmgkb.pharmcat.util.DataSerializer.deserializeDefinitionsFromJson(DataSerializer.java:61)
    at org.pharmgkb.pharmcat.haplotype.DefinitionReader.readFile(DefinitionReader.java:103)
    at org.pharmgkb.pharmcat.haplotype.DefinitionReader.read(DefinitionReader.java:90)
    at org.pharmgkb.pharmcat.haplotype.NamedAlleleMatcher.main(NamedAlleleMatcher.java:96)
Caused by: java.text.ParseException: Failed to parse date [“Apr 24, 2018 12:00:00 AM’]: Invalid number: Apr 
    at com.google.gson.internal.bind.util.ISO8601Utils.parse(ISO8601Utils.java:274)
    at com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate(DateTypeAdapter.java:72)
    ... 10 more
Caused by: java.lang.NumberFormatException: Invalid number: Apr 
    at com.google.gson.internal.bind.util.ISO8601Utils.parseInt(ISO8601Utils.java:311)
    at com.google.gson.internal.bind.util.ISO8601Utils.parse(ISO8601Utils.java:129)
    ... 11 more

谁能帮我指出解决问题的说明?感谢您的考虑。

标签: javajson

解决方案


您需要创建一个 JsonDeserializer,您将在其中提供特定的日期格式,如下所示

GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Date.class, new DateDeserializer());

试试这个链接:这是一个例子


推荐阅读