java.lang.NumberFormatException : 입력 문자열 : "2017-01-28 13:28:20"

KJEjava48

내 자바 프로젝트에는 다음 오류가 발생하는 gson deserializer 함수가 있습니다.

java.lang.NumberFormatException: For input string: "2017-01-28 13:28:20"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:589)
at java.lang.Long.parseLong(Long.java:631)
at com.google.gson.JsonPrimitive.getAsLong(JsonPrimitive.java:238)
at com.example.myproject.controller.MyController$1.deserialize(MyController.java:222)
at com.example.myproject.controller.MyController$1.deserialize(MyController.java:1)
at com.google.gson.TreeTypeAdapter.read(TreeTypeAdapter.java:58)
at com.google.gson.internal.bind.TypeAdapters$22$1.read(TypeAdapters.java:526)
at com.google.gson.internal.bind.TypeAdapters$22$1.read(TypeAdapters.java:524)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:81)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:60)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172)
at com.google.gson.Gson.fromJson(Gson.java:803)
at com.google.gson.Gson.fromJson(Gson.java:768)
at com.google.gson.Gson.fromJson(Gson.java:717)
at com.google.gson.Gson.fromJson(Gson.java:689)

아래 json 문자열을 역 직렬화 할 때이 오류가 발생합니다.

jsonString = {"repList":[{"createdOn":"2017-01-28 13:28:20","date":"2016-11-17 00:00:00","description":"","id":45,"userId":10}],"subList":[{"attachmentCount":0,"dateOn":"2017-01-28 13:28:20","id":86,"screenId":1,"sync":"1","repId":45,"userId":10}]}

아래는 gson deserialization을 수행 한 내 기능입니다.

SimpleDateFormat dtf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.ENGLISH);
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {

    @Override
    public Date deserialize(JsonElement json, Type type, JsonDeserializationContext deserializationContext) throws JsonParseException {

        String frStr = dtf.format(new Date(json.getAsJsonPrimitive().getAsLong()));
        dtf.setTimeZone(TimeZone.getDefault());
        Date retDate =null;
            try {
                retDate = dtf.parse(frStr);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        return retDate;
    }
});
gson = builder.create();
MainAccounts mainAcc = gson.fromJson(jsonString, MainAccounts.class);

내가 주목 한 것은 json 프리미티브를 아래와 같이 변환 할 때 예외가 발생한다는 것입니다.

json.getAsJsonPrimitive().getAsLong()

deserialize 메서드 내부에서이 문제를 어떻게 해결할 수 있습니까? 제발 도와주세요.

니콜라스 필로 토

당신은 직접의 가치를 얻을 필요 JsonElement가 정말 같이 A가 String아닌 long메소드를 호출하여 getAsString(), 그렇지 않으면 당신이 얻을 것이다 NumberFormatException당신은, 그래서 발견했습니다 이미로 JsonDeserializer대신해야한다 :

new JsonDeserializer<Date>() {
    private SimpleDateFormat dtf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    {
        // Indicate the time zone of the input date
        dtf.setTimeZone(TimeZone.getTimeZone("Asia/Dubai"));
    }
    @Override
    public Date deserialize(JsonElement json, Type type, 
        JsonDeserializationContext deserializationContext) throws JsonParseException {
        try {
            // Get the json element as a String and parse it to get a Date
            return dtf.parse(json.getAsString());
        } catch (ParseException e) {
            // Throw a JsonParseException in case of a parsing error
            throw new JsonParseException(e);
        }
    }
}

NB : 그대로, JsonDeserializer위에서 제안한 익명의 내부 클래스는 스레드로부터 안전하지 않습니다. SimpleDateFormat이유는 스레드로부터 안전하지 않기 때문에 스레드로부터 안전하지 않으므로 인스턴스를 공유하지 말고 JSON 콘텐츠를 역 직렬화하고 싶을 때마다 새 인스턴스를 만드십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

java.lang.NumberFormatException : 입력 문자열 : "0.89829948"

분류에서Dev

입력 문자열 "1"에 대한 java.lang.NumberFormatException의

분류에서Dev

오류 : java.lang.NumberFormatException : 입력 문자열 : "100"

분류에서Dev

Jsp java.lang.NumberFormatException : 입력 문자열 : "atividade"

분류에서Dev

Android 통화-java.lang.NumberFormatException : 입력 문자열 : "099"

분류에서Dev

java에서 float 구문 분석 문제 : java.lang.NumberFormatException : 입력 문자열 : "[60.0]"

분류에서Dev

스레드 "주요"java.lang.NumberFormatException의 예외 : 입력 문자열 : "38"

분류에서Dev

int java.lang.NumberFormatException 문자열

분류에서Dev

java parseint- "AWT-EventQueue-0"스레드 예외 java.lang.NumberFormatException : 입력 문자열 : ""

분류에서Dev

스레드 "main"의 예외 java.lang.NumberFormatException : 입력 문자열 : ""(숫자를 입력했지만 빈 문자열을 읽은 것 같습니다)

분류에서Dev

java.lang.NumberFormatException : 입력 문자열의 경우 : Spark로 눈송이에서 읽을 때 "inf"

분류에서Dev

스레드 "AWT-EventQueue-0"예외 java.lang.NumberFormatException : 입력 문자열의 경우 : "달 선택"

분류에서Dev

java.lang.NumberFormatException 오류 : 일반 엔드 포인트로 가져 오는 입력 문자열의 경우

분류에서Dev

활동을 시작할 수 없습니다. ComponentInfo : java.lang.NumberFormatException : 입력 문자열 : ""

분류에서Dev

스레드 "AWT-EventQueue-0"에서 예외 java.lang.NumberFormatException : 입력 문자열 : "FALSE"

분류에서Dev

NumberFormatException 입력 문자열 : "9646324351"

분류에서Dev

java.lang.NumberFormatException 문제

분류에서Dev

java.lang.NumberFormatException : 빈 문자열-OBJ 모델 로더

분류에서Dev

pyspark를 사용하여 S3에서 데이터를 읽으면 java.lang.NumberFormatException 발생 : 입력 문자열 : "100M"

분류에서Dev

java.lang.NumberFormatException : 입력 문자열 : "505c621128f97f31c5870f2a9e2d274fa432bd0

분류에서Dev

파일 입력을 읽는 동안 java.lang.NumberFormatException

분류에서Dev

Android-NumberFormatException-입력 문자열

분류에서Dev

Picocli-java.lang.NumberFormatException

분류에서Dev

JavaFX 애플리케이션 스레드-java.lang.NumberFormatException : 빈 문자열

분류에서Dev

Java.lang.NumberFormatException.forInputString (NumberFormatException.java:65)

분류에서Dev

BigInteger-java.lang.NumberFormatException 오류?

분류에서Dev

오류 : java.lang.NumberFormatException

분류에서Dev

Getting java.lang.NumberFormatException When Outputting

분류에서Dev

java.lang.NumberFormatException in my binary progam

Related 관련 기사

  1. 1

    java.lang.NumberFormatException : 입력 문자열 : "0.89829948"

  2. 2

    입력 문자열 "1"에 대한 java.lang.NumberFormatException의

  3. 3

    오류 : java.lang.NumberFormatException : 입력 문자열 : "100"

  4. 4

    Jsp java.lang.NumberFormatException : 입력 문자열 : "atividade"

  5. 5

    Android 통화-java.lang.NumberFormatException : 입력 문자열 : "099"

  6. 6

    java에서 float 구문 분석 문제 : java.lang.NumberFormatException : 입력 문자열 : "[60.0]"

  7. 7

    스레드 "주요"java.lang.NumberFormatException의 예외 : 입력 문자열 : "38"

  8. 8

    int java.lang.NumberFormatException 문자열

  9. 9

    java parseint- "AWT-EventQueue-0"스레드 예외 java.lang.NumberFormatException : 입력 문자열 : ""

  10. 10

    스레드 "main"의 예외 java.lang.NumberFormatException : 입력 문자열 : ""(숫자를 입력했지만 빈 문자열을 읽은 것 같습니다)

  11. 11

    java.lang.NumberFormatException : 입력 문자열의 경우 : Spark로 눈송이에서 읽을 때 "inf"

  12. 12

    스레드 "AWT-EventQueue-0"예외 java.lang.NumberFormatException : 입력 문자열의 경우 : "달 선택"

  13. 13

    java.lang.NumberFormatException 오류 : 일반 엔드 포인트로 가져 오는 입력 문자열의 경우

  14. 14

    활동을 시작할 수 없습니다. ComponentInfo : java.lang.NumberFormatException : 입력 문자열 : ""

  15. 15

    스레드 "AWT-EventQueue-0"에서 예외 java.lang.NumberFormatException : 입력 문자열 : "FALSE"

  16. 16

    NumberFormatException 입력 문자열 : "9646324351"

  17. 17

    java.lang.NumberFormatException 문제

  18. 18

    java.lang.NumberFormatException : 빈 문자열-OBJ 모델 로더

  19. 19

    pyspark를 사용하여 S3에서 데이터를 읽으면 java.lang.NumberFormatException 발생 : 입력 문자열 : "100M"

  20. 20

    java.lang.NumberFormatException : 입력 문자열 : "505c621128f97f31c5870f2a9e2d274fa432bd0

  21. 21

    파일 입력을 읽는 동안 java.lang.NumberFormatException

  22. 22

    Android-NumberFormatException-입력 문자열

  23. 23

    Picocli-java.lang.NumberFormatException

  24. 24

    JavaFX 애플리케이션 스레드-java.lang.NumberFormatException : 빈 문자열

  25. 25

    Java.lang.NumberFormatException.forInputString (NumberFormatException.java:65)

  26. 26

    BigInteger-java.lang.NumberFormatException 오류?

  27. 27

    오류 : java.lang.NumberFormatException

  28. 28

    Getting java.lang.NumberFormatException When Outputting

  29. 29

    java.lang.NumberFormatException in my binary progam

뜨겁다태그

보관