2010-02-03 2 views
11

자바를 배우고 서버에서 전달되는 JSON 객체를 사용하는 Android 애플리케이션을 작성하고 있습니다.JSON`date (...)`org.json`을 사용하여 java.Util.Date`로

나는 날짜를 제외하고 모두 작동합니다.

나는이 다시

'SomeKey':'\/Date(1263798000000)\/' 

내가 org.json.JSONObject을 사용하고 하나 얻을.

SomeKeyjava.Util.Date으로 어떻게 변환합니까?

답변

8

날짜 형식은 JSON에서 표준이 아니므로 "전달 방법"을 선택해야합니다. 나는 당신이보고있는 가치가 밀리미터라고 생각합니다. 자바에서

는 :

System.out.println (new Date(1263798000000L)); 
// prints: Mon Jan 18 09:00:00 IST 2010 

이것은 물론, 내 시간대에 있지만, 어떤 경우는 매우 최근의 일이다. 날짜 생성자의 javadoc의에서

:

매개 변수 :
일 - 1970 년 1 월 1 일 00:00:00 GMT 이후의 밀리 초. 여기에 문서에

링크 - 요니 이미 언급 한 바와 같이>http://java.sun.com/javase/6/docs/api/java/util/Date.html#Date%28long%29

+0

나뿐만 아니라 AVA 새로운 해요, 정규 표현식을 어떻게 값을 얻기 위해? –

+0

정규식을 사용할 필요가 없으며 String 메서드를 사용하여 하위 문자열을 가져올 수 있습니다. 문서를보십시오. – Yoni

2

는 JSON은 날짜가 무엇인지 정의하지 않거나 방법을 직렬화. 게시 한 JSON 스 니펫을 보면 마치 누군가가 너무 창의적인 느낌을받은 것처럼 보입니다.

중요한 것은 여기에 유의해야 할 점은 모든 JSON 구문 분석기에서이 문자열은 단지 문자열 일뿐입니다. "날짜 (12345)"부분은 의미가 없습니다. 이 경우 자신을 java.util.Date으로 구문 분석해야합니다.이 경우에는 숫자가 아닌 항목을 제거하고 숫자 (UNIX 시간)를 사용하여 java.util.Date을 인스턴스화해야합니다.

기록 용으로 만 사용하십시오. 일반적인 방법은 JSON 중 하나

{'timestamp':1265231402} 

또는

{'timestamp':'Wed, 03 Feb 2010 22:10:38 +0100'} 

은 후자의 예를 사용 (내가 이것을 쓰고 있어요으로) 현재의 타임 스탬프 될 가능성이 표준 RFC-2822 것이 사용하여 날짜를 전달하는 포맷팅은 Java의 날짜 유틸리티를 사용하여 쉽게 구문 분석 할 수 있습니다. Java에서 날짜를 구문 분석하는 방법은 SimpleDateFormat을 참조하십시오.

+1

.NET DateTime 객체가 JsonSerialiser로 직렬화되는 방법입니다. –

14

이 도움이 될 수 있습니다 :

public static Date JsonDateToDate(String jsonDate) 
{ 
    // "/Date(1321867151710)/" 
    int idx1 = jsonDate.indexOf("("); 
    int idx2 = jsonDate.indexOf(")"); 
    String s = jsonDate.substring(idx1+1, idx2); 
    long l = Long.valueOf(s); 
    return new Date(l); 
} 
0
public String FormartDate(String date) { 
     Calendar calendar = Calendar.getInstance(); 
     String datereip = date.replace("/Date(", "").replace(")/", ""); 
     Long timeInMillis = Long.valueOf(datereip); 
     calendar.setTimeInMillis(timeInMillis); 

     String DateFmtI; 
     SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy"); 
     DateFmtI = simpleDateFormat.format(calendar.getTime()); 
     return DateFmtI; 
    } 
관련 문제