[英]Spring HATEOAS add external content while deserializing JSON
我正在創建一個客戶端以查詢我們的JSON Api,並且嘗試使用來自另一個資源的內容來擴展資源。 我之所以要這樣做,是因為資源是同一實體的一部分,而我們的用戶將獲得單個實體,而無需分別查詢兩個服務。 我將在此處放置資源的基本版本,以更好地解釋問題:
/* Sample class */
public class Sample {
public String accession;
public String name;
//...
public Map<RelationType, List<Relation>> relations
// ... classic getters and setters
}
// Relation class
public class Relation {
public String id;
// getters and setters
}
現在,JSON Api與此類似:這里是示例
{
"_embedded":{
"samples":[
{
"accession":"SAME1500861",
"name":"1380435",
"_links":{
"self":{ "href":"https://www.ebi.ac.uk/biosamples/api/samples/SAME1500861"
},
"sample":{
"href":"https://www.ebi.ac.uk/biosamples/api/samples/SAME1500861"
},
"relations":{
"href":"https://www.ebi.ac.uk/biosamples/api/samplesrelations/SAME1500861"
}
}
}
]
},
"_links":{ }
}
這里的關系:
{
"accession": "SAME1500861",
"_links": {
"self": {
"href": "https://www.ebi.ac.uk/biosamples/api/samplesrelations/SAME1500861"
},
"derivedFrom": {
"href": "https://www.ebi.ac.uk/biosamples/api/samplesrelations/SAME1500861/derivedFrom"
},
"derivedTo": {
"href": "https://www.ebi.ac.uk/biosamples/api/samplesrelations/SAME1500861/derivedTo"
},
"externalLinks": {
"href": "https://www.ebi.ac.uk/biosamples/api/samplesrelations/SAME1500861/externalLinks"
},
"recuratedTo": {
"href": "https://www.ebi.ac.uk/biosamples/api/samplesrelations/SAME1500861/recuratedTo"
}
}
}
任何建議都很好。 謝謝
您只需要創建一個Java類結構即可表示JSON中的數據。 您可以使用任何在線查看器或某些chrome擴展程序來查看狹窄...
我剛剛完成了您與JSON關系的一小部分...
public class Relations {
public String accession;
public Links _links;
}
public class Links {
public Self self;
}
public class Self {
public String href;
}
這在我眼中至少有兩個選擇...
基本上我建議使用Spring RestTemplate
RestTemplate restTemplate = new RestTemplate();
Relations result = restTemplate.getForObject("https://www.ebi.ac.uk/biosamples/api/samplesrelations/SAME1500861", Relations.class);
或者,您可以使用任何庫來獲取JSON響應並通過Gson進行轉換
String relationsPart = "{\n" + " \"accession\": \"SAME1500861\",\n" + " \"_links\": {\n" + " \"self\": {\n" + " \"href\": \"https://www.ebi.ac.uk/biosamples/api/samplesrelations/SAME1500861\"\n" + " }\n" + " }\n" + "}";
Gson gson = new GsonBuilder().setPrettyPrinting().create();
Relations result = gson.fromJson(relationsPart, Relations.class);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.