2013-10-09 1 views
1

JSON URL의 데이터를 반환하는 코드를 작성했습니다. 데이터는 String으로 저장되며 여기에는 출력의 예가 나와 있습니다.JSON URL의 문자열 결과를 개별 Java 객체로 분할하는 방법

{ 

"status": "success", 

"records": [ 

    { 
     "timestamp": 1381312251599, 
     "deviceId": "288", 
     "temperature": 17 
    }, 

    { 
     "timestamp": 1381312281599, 
     "deviceId": "288", 
     "temperature": 17 
    }, 

    { 
     "timestamp": 1381312311599, 
     "deviceId": "288", 
     "temperature": 17 
    } 
] 
} 

다음은이 정보를 얻는 데 사용 된 코드 샘플입니다. 나는 상태 필드를 만드는을 위해 도움이 필요한 것은

String jsonString = callURL("http://localhost:8000/eem/api/v1/metrics/temperature/288"); 
System.out.println(jsonString); 

후, 타임 스탬프,의 DeviceID, 온도 및이 값을 저장하는 기록 배열입니다.

내가 GSON보고 시도했다, 그러나 나는 사람이 어떤 도움이 있다면 그것은

, 그것은 좋은 것입니다 이해할 수없는, 감사

+2

당신은 무엇을 이해하지 못했다? 시도해 봤어? 시도한 코드는 어디에 있으며 그 오류는 무엇입니까? – SudoRahul

답변

0

복사, 붙여 넣기이 실행 :

package stackoverflow.questions; 

import java.util.List; 

import com.google.gson.Gson; 

public class Question { 

    class Record { 
     Long timestamp; 
     String deviceId; 
     Long temperature; 
    } 

    class Container { 
     List<Record> records; 
    } 

    public static void main(String[] args) { 
     String json = "{ \"status\": \"success\", \"records\": [{\"timestamp\": 1381222871868,\"deviceId\": \"288\",\"temperature\": 17 },{\"timestamp\": 1381222901868,\"deviceId\": \"288\",\"temperature\": 17 },{\"timestamp\": 1381222931868,\"deviceId\": \"288\",\"temperature\": 17 } ]} "; 

     Gson g = new Gson(); 
     Container c = g.fromJson(json, Container.class); 
     for (Record r : c.records) 
      System.out.println(r); 

    } 
} 
0

그것은 매우 간단합니다. json 구조와 일치하는 자바 클래스를 생성해야한다.

public class Response { 
    String status; 
    List<Record> records; 
} 

public class Record { 
    long timestamp; 
    int deviceId; 
    int temperature; 
} 

그리고 당신의 JSON을 제공하는 것보다 및 Response.class

는 GSON합니다.

+0

그래, 클래스를 만들지 만 gson에 json과 Response.class를 어떻게 제공합니까? 죄송합니다.이 모든 것에 대해 계속 저의 머리를 쓰려고합니다. – Dan

+0

다음은 https://sites.google.com/site/gson/gson-user-guide#TOC-Object-Examples – Admit

0

나는 잭슨을 사용하며 매우 간단합니다.

jsonString과 동일한 속성을 가진 적절한 Java 클래스를 만들어야합니다.

는이

class Record { 
    private Long timestamp; 
    private Integer deviceId; 
    private Integer temperature; 

    // getters and setters ... 
} 

class Response { 

    private String status; 
    private List<Record> records; 

    // getters and setters ... 

} 

같은 것을 만들 필요가 다음

ObjectMapper mapper = new ObjectMapper(); 
return mapper.readValue(jsonString, Response.class); 
+0

의 예입니다. 마지막 두 줄 코드를 어디에 넣어야합니까? 나는 나의 주요한 방법을 시도했다. 그러나 나는 공허함 때문에 그것을 할 수 없었다. – Dan

관련 문제