java - 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
谁能帮我指出解决问题的说明?感谢您的考虑。
解决方案
您需要创建一个 JsonDeserializer,您将在其中提供特定的日期格式,如下所示
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Date.class, new DateDeserializer());
试试这个链接:这是一个例子
推荐阅读
- oracle - 如何获得 HH:MI:SS 等两种日期格式之间的差异?
- tfs - 在 TFS 中构建多个配置 在不同平台上构建
- html - 按钮不适用于按 id 获取元素
- mysql - 在 select 中获取列表中的记录不会限制在 mysql 中列出
- java - 无需触摸交互的对焦相机
- javascript - 使用 JavaScript 在 AAD 中自动创建新的应用注册
- android - 创建 Firebase A/B 测试实验时,«Review» 按钮被禁用
- php - 带有数组过滤的目录列表回显
- linux - 尝试在单个命令中在 docker 容器中运行 chmod
- python - 如何使 random.randint() 更随机