2016-03-30 5 views
-2

Sadece dinlenme servisleriyle başladım ve bu https://spring.io/guides/gs/consuming-rest/'u okudum. Daha sonra bu öğreticiye göre tüketmek ve görüntülemek için bir hizmetim var. hizmeti bir dinlenme API ve ben buTüketici Dinlenme Servisi

{ 
"disclaimer": "1", 
"license": "2", 
"timestamp": 1458057661, 
"base": "someValue", 
    "rates": { 
    "one": 3.673019, 
    "two": 68.449999, 
    "three": 124.168, 
    "four": 488.669996, 
    ..., 
    ..., 
    ... 
    } 
} 

gibi bir json Sonra ben 2 Java sınıfı i almak için Oranları sınıfını dolduracak nasıl sorun olduğunu

@JsonIgnoreProperties(ignoreUnknown = true) 
public class Cur { 

private String disclaimer; 
private String license; 
private String timestamp; 
private String base;  
private Rates rates; 

public Cur() { 
    super(); 
} 

///get/set 


///tostring 

} 

@JsonIgnoreProperties(ignoreUnknown = true) 
public class Rates { 

public Rates(){ 

    //// i am not sure here how should i get the rates value. 
    } 

} 

gibi yarattık olsun Verileri değişkenlere dönüştürür, böylece daha sonra görüşlerini sunabilirim. RestTemplate'i kullanıyorum. İşte test.Bu işe yarıyor ama hiçbir ücret değeri yok. Sanırım bir Haritaya ihtiyacım var çünkü fiyatlar bir koleksiyon. Nasıl uygulanacağı konusunda bir fikir.

@Test 
public void getCurTest() { 
    String URL="some url"; 
    String JSONTYPE="some json type"; 
    String API="some id"; 
    RestTemplate restTemplate = new RestTemplate();   
    Cur cur= restTemplate.getForObject(URL+JSONTYPE+API, Cur.class); 
    log.info("cur");   
    System.out.println(cur); 
} 
+0

JSON'daki '' rate'' nesnesinin içeriğine bakın. Ne tür bir veri yapısı (yerleşik düşünenleri düşünün) böyle görünen bir veri kümesini saklamak için kullanabilir misiniz? – chrylis

+0

Bu, anahtar değeri gibi bir harita olabilir ama emin değilim. – user1577708

+0

Eğer 'oran'ların bir harita olduğunu söylerseniz ne olur? – chrylis

cevap

0

Birkaç yıl önce biraz garipim. İşte yapabileceğiniz şey.

İlk çözüm

basit bir şekilde sonra bir dize olarak her şeyi elde ve regex ile ayrıştırmak ve istediğini elde edebilirsiniz

CloseableHttpClient httpclient = HttpClients.createDefault(); 
    HttpGet httpget = new HttpGet("your rest service api"); 
    CloseableHttpResponse response = httpclient.execute(httpget); 
    try { 
     HttpEntity entity = response.getEntity(); 

     if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode()) { 
      String responseValue = EntityUtils.toString(entity); 
      System.out.println(responseValue); 
     } else { 
      // log error 
     } 
    } finally { 
     response.close(); 
    } 
} 

olduğunu.

İkinci çözüm

olduğu gibi bir veritabanına tüm kalanını kaydedebilirsiniz. Daha hızlı için mongodb kullanın.
Daha sonra oraya bir sınıf oluşturabilir ve kullanabilirsin.

Üçüncü çözüm

kullanımı sadece json yapıştırın ve bunları kullanmak için java sınıfları yaratacak http://www.jsonschema2pojo.org/ bu araç. Ne eklemek istediğinizi seçebilirsiniz. Bu sizin derslerinizi yaratacak, sonra bunları kullanabilirsiniz. İşte size kolaylık sağlamak için.

Sonra istediğiniz gibi kullanabilirsiniz.

Umarım tüm bunlar yardımcı olur. Kendine iyi bak.

+0

@ GiorgoCh İlkini kullanıyorum ve çalışıyor. – user1577708

+0

Evet ama aynı zamanda http://www.jsonschema2pojo.org/ ne istediğinizi iyi yapacak. – GiorgoCH

0

JSON olduğu şekilde, Oranları sınıfınızın aşağıdaki gibi görünmelidir populed olsun.

Kullanmak triyng olan API
public class Cur { 

    private String disclaimer; 
    private String license; 
    private Integer timestamp; 
    private String base; 
    private Rates rates; 

} 

public class Rates { 

    private Double one; 
    private Double two; 
    private Double three; 
    private Double four; 
    //This would be better but the JSON dosnt fit this 
    //private Map<String, Double> rates; 

} 

?

+0

@ Johanes, sahip olduğunuz kadar bu deneyi zaten denediniz Tam olarak aynı. Ama ben boş bir Map.So sorun, değerleri ile 1'den 1000 değişkene olabilir oranları değerleri elde etmektir. – user1577708

+0

Hangi API'yi kullanıyorsunuz? – Johanes

+0

döviz için Api. Hangisi olduğunu söyleyemem. Afedersiniz. – user1577708