fastjson逆シーケンス化LocalDateTimeに失敗した問題java.time.format.DateTimeParseException: Text '2019-05-24 13:52:11' co...

12571 ワード

ローカルjavaクラス
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;

/***
 *       
 */
public class UserIssueProcessDto {

    /***
     *     
     */
    private String f_clsm;
    /***
     *        
     */
    private String f_fk;

    /***
     *       
     */
    @DateTimeFormat( pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime f_clkssj;

    /***
     *       
     */
    @DateTimeFormat( pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime f_cljssj;

    /***
     *     
     */
    private Double duration;

    private String f_clry;

    private String f_clryid;

    /***
     *    ID
     */
    private Integer creatorId;
    /***
     *      
     */
    private String creatorName;

    /***
     *     
     */
    private LocalDateTime f_addtime;

    public String getF_clsm() {
        return f_clsm;
    }

    public void setF_clsm(String f_clsm) {
        this.f_clsm = f_clsm;
    }

    public String getF_fk() {
        return f_fk;
    }

    public void setF_fk(String f_fk) {
        this.f_fk = f_fk;
    }

    public LocalDateTime getF_clkssj() {
        return f_clkssj;
    }

    public void setF_clkssj(LocalDateTime f_clkssj) {
        this.f_clkssj = f_clkssj;
    }

    public LocalDateTime getF_cljssj() {
        return f_cljssj;
    }

    public void setF_cljssj(LocalDateTime f_cljssj) {
        this.f_cljssj = f_cljssj;
    }

    public Double getDuration() {
        return duration;
    }

    public void setDuration(Double duration) {
        this.duration = duration;
    }

    public String getF_clry() {
        return f_clry;
    }

    public void setF_clry(String f_clry) {
        this.f_clry = f_clry;
    }

    public String getF_clryid() {
        return f_clryid;
    }

    public void setF_clryid(String f_clryid) {
        this.f_clryid = f_clryid;
    }

    public Integer getCreatorId() {
        return creatorId;
    }

    public void setCreatorId(Integer creatorId) {
        this.creatorId = creatorId;
    }

    public String getCreatorName() {
        return creatorName;
    }

    public void setCreatorName(String creatorName) {
        this.creatorName = creatorName;
    }

    public LocalDateTime getF_addtime() {
        return f_addtime;
    }

    public void setF_addtime(LocalDateTime f_addtime) {
        this.f_addtime = f_addtime;
    }
}

テストコード
String json = "[{\"f_clsm\":\"111\",\"f_fk\":\"-1\",\"f_clkssj\":\"2019-05-24 13:52:11\",\"f_cljssj\":\"2019-05-24 14:52:11\",\"f_clryid\":\"1000645\"}]";

        List list = JSON.parseObject(json, new TypeReference>() {});
        System.out.println(list);

最初に発見されたプロジェクトではfastjson-1.2.7が使用された.jar
エラーは次のとおりです.
com.alibaba.fastjson.JSONException: Text '2019-05-24 13:52:11' could not be parsed at index 10
at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:555) at com.alibaba.fastjson.JSON.parseObject(JSON.java:251) at com.alibaba.fastjson.JSON.parseObject(JSON.java:227) at com.alibaba.fastjson.JSON.parseObject(JSON.java:181) at com.TestSpringMVCConvert.test(TestSpringMVCConvert.java:19) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) at org.junit.runners.ParentRunner.run(ParentRunner.java:300) at org.junit.runner.JUnitCore.run(JUnitCore.java:157) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)Caused by: java.time.format.DateTimeParseException: Text '2019-05-24 13:52:11' could not be parsed at index 10 at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949) at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851) at java.time.LocalDateTime.parse(LocalDateTime.java:492) at java.time.LocalDateTime.parse(LocalDateTime.java:477) at com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec.deserialze(Jdk8DateCodec.java:35) at com.alibaba.fastjson.parser.deserializer.DefaultFieldDeserializer.parseField(DefaultFieldDeserializer.java:33) at com.alibaba.fastjson.parser.deserializer.ASMJavaBeanDeserializer.parseField(ASMJavaBeanDeserializer.java:74) at com.alibaba.fastjson.parser.deserializer.ASMJavaBeanDeserializer$InnerJavaBeanDeserializer.parseField(ASMJavaBeanDeserializer.java:86) at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:330) at com.alibaba.fastjson.parser.deserializer.ASMJavaBeanDeserializer.parseRest(ASMJavaBeanDeserializer.java:100) at Fastjson_ASM_UserIssueProcessDto_1.deserialze(Unknown Source) at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:635) at com.alibaba.fastjson.parser.deserializer.CollectionDeserializer.deserialze(CollectionDeserializer.java:63) at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:551) ... 26 more
この問題はspringmvcエンティティのプロパティが注入されたときに、さまざまなspringmvc構成が無効になったことが最初に発見されました.
その後、最近使用されたmybatisがLocalDateTime/LOcalDateなどのクラスでjsr 310の時間クラスを使用していることを連想し、jarパッケージサポートを追加する必要がある.
最初はjackson-datatype-jsr 310-2.7.0-rc 1を間違えました.jarが追加され、デバッグは無効になっています.
その後、FastjsonがJava 8のLocalDateTimeをサポートしている記事を見つけましたか?fastjson-1.2.11がサポートしていると言って、バージョンの交換を開始します.
筆者はmvnrepository.comは対応するバージョンをダウンロードして、最終的なテストを経て、wenshaoの言い方は間違っています.
正常に解析するにはfastjson-1.2.12以降を使用する必要があります.
 
転載先:https://www.cnblogs.com/passedbylove/p/10930665.html