消费休息服务

时间:2016-03-30 13:31:31

标签: java spring rest

我刚开始使用休息服务,我已阅读此https://spring.io/guides/gs/consuming-rest/。然后根据本教程我有一个消费和显示的服务。 该服务是一个休息api,我得到像这样的json

 "splits": [
  {
    "start@": "0.00",
    "end@": "0.00",
    "lapCount@": 0,
    "duration@": null,
    "start": "0.00",
    "end": "0.00",
    "lapCount": 0,
    "duration": null
  },
  {
    "start@": "0.00",
    "end@": "0.00",
    "lapCount@": 0,
    "duration@": null,
    "start": "0.00",
    "end": "0.00",
    "lapCount": 0,
    "duration": null
  }

然后我创建了2个类似的Java类

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

问题是如何填充Rates类以将数据转换为变量,以便稍后我可以呈现视图。 我使用RestTemplate。这是测试。它有效,但我没有价值。 我认为我需要一张地图因为它是一个集合。任何想法如何实现它。

@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.
   }

 }

2 个答案:

答案 0 :(得分:0)

您的JSON的方式是,让您的课程中的人口费用应该是这样的。

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;

}

您使用哪种API?

答案 1 :(得分:0)

几年前我也有同样的事情,这有点奇怪。在这里你可以做什么。

第一个解决方案

简单的方法是

 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();
    }
}
然后,您可以将所有内容作为字符串获取,并使用正则表达式解析它并获得您想要的内容。

第二个解决方案

您可以将所有剩余部分保存到数据库中。使用mongodb更快。
然后你可以把它从那里拿到一个类并使用它。

第三种解决方案

使用此工具http://www.jsonschema2pojo.org/只需粘贴您的json,它将创建您的java类以使用它们。您可以选择要添加的内容。这将创建您的类,然后您可以使用它们。 这是为了您的方便。

package com.example;

import java.util.HashMap;
import java.util.Map;
import javax.annotation.Generated;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import org.apache.commons.lang.builder.ToStringBuilder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
"disclaimer",
"license",
"timestamp",
"base",
"rates"
})
public class Example {

@JsonProperty("disclaimer")
private String disclaimer;
@JsonProperty("license")
private String license;
@JsonProperty("timestamp")
private Integer timestamp;
@JsonProperty("base")
private String base;
@JsonProperty("rates")
private Rates rates;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();

/**
* No args constructor for use in serialization
*
*/
public Example() {
}

/**
*
* @param timestamp
* @param disclaimer
* @param base
* @param rates
* @param license
*/
public Example(String disclaimer, String license, Integer timestamp, String base, Rates rates) {
this.disclaimer = disclaimer;
this.license = license;
this.timestamp = timestamp;
this.base = base;
this.rates = rates;
}

/**
*
* @return
* The disclaimer
*/
@JsonProperty("disclaimer")
public String getDisclaimer() {
return disclaimer;
}

/**
*
* @param disclaimer
* The disclaimer
*/
@JsonProperty("disclaimer")
public void setDisclaimer(String disclaimer) {
this.disclaimer = disclaimer;
}

/**
*
* @return
* The license
*/
@JsonProperty("license")
public String getLicense() {
return license;
}

/**
*
* @param license
* The license
*/
@JsonProperty("license")
public void setLicense(String license) {
this.license = license;
}

/**
*
* @return
* The timestamp
*/
@JsonProperty("timestamp")
public Integer getTimestamp() {
return timestamp;
}

/**
*
* @param timestamp
* The timestamp
*/
@JsonProperty("timestamp")
public void setTimestamp(Integer timestamp) {
this.timestamp = timestamp;
}

/**
*
* @return
* The base
*/
@JsonProperty("base")
public String getBase() {
return base;
}

/**
*
* @param base
* The base
*/
@JsonProperty("base")
public void setBase(String base) {
this.base = base;
}

/**
*
* @return
* The rates
*/
@JsonProperty("rates")
public Rates getRates() {
return rates;
}

/**
*
* @param rates
* The rates
*/
@JsonProperty("rates")
public void setRates(Rates rates) {
this.rates = rates;
}

@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}

@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}

@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}

}


package com.example;

import java.util.HashMap;
import java.util.Map;
import javax.annotation.Generated;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import org.apache.commons.lang.builder.ToStringBuilder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
"one",
"two",
"three",
"four"
})
public class Rates {

@JsonProperty("one")
private Double one;
@JsonProperty("two")
private Double two;
@JsonProperty("three")
private Double three;
@JsonProperty("four")
private Double four;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();

/**
* No args constructor for use in serialization
*
*/
public Rates() {
}

/**
*
* @param two
* @param one
* @param three
* @param four
*/
public Rates(Double one, Double two, Double three, Double four) {
this.one = one;
this.two = two;
this.three = three;
this.four = four;
}

/**
*
* @return
* The one
*/
@JsonProperty("one")
public Double getOne() {
return one;
}

/**
*
* @param one
* The one
*/
@JsonProperty("one")
public void setOne(Double one) {
this.one = one;
}

/**
*
* @return
* The two
*/
@JsonProperty("two")
public Double getTwo() {
return two;
}

/**
*
* @param two
* The two
*/
@JsonProperty("two")
public void setTwo(Double two) {
this.two = two;
}

/**
*
* @return
* The three
*/
@JsonProperty("three")
public Double getThree() {
return three;
}

/**
*
* @param three
* The three
*/
@JsonProperty("three")
public void setThree(Double three) {
this.three = three;
}

/**
*
* @return
* The four
*/
@JsonProperty("four")
public Double getFour() {
return four;
}

/**
*
* @param four
* The four
*/
@JsonProperty("four")
public void setFour(Double four) {
this.four = four;
}

@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}

@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}

@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}

}

然后你可以随意使用它。

我希望这一切都有帮助。小心。