[英]Java: Read in JSON file and expose it in a REST service
我是一名前端Web開發人員,試圖了解有關后端的更多信息。 目前,我只想讀取本地JSON文件並將其公開在REST服務中,以供AngularJS解析(這有意義嗎?)。 我相信我已經正確設置了servlet,但是不確定如何從Java的角度來解決這個問題。 值得注意的是,我是一名JavaScript程序員。 我試圖在兩種方法之間進行選擇。
該類中包含以下方法
@Path("/")
public class JsonRESTService {
.....
}
第一種方法
@GET
@Path("/jsonService")
@Consumes("application/json")
@Produces("application/json")
public Response jsonREST(InputStream incomingData) {
StringBuilder jsonBuilder = new StringBuilder();
try {
BufferedReader in = new BufferedReader(new InputStreamReader(incomingData));
String line = null;
while((line = in.readLine()) != null) {
jsonBuilder.append(line);
}
} catch(Exception e) {
System.out.println("Error Parsing: - ");
}
System.out.println("Data Received: " + jsonBuilder.toString());
return Response.status(200).entity(jsonBuilder.toString()).build();
}
第二種方法 :不確定return
什么。
@GET
@Path("/jsonService")
@Consumes("application/json")
@Produces("application/json")
public Response jsonREST(InputStream incomingData) {
JSONParser parser = new JSONParser();
try {
Object obj = parser.parse(new FileReader("C:/files/flat.json"));
JSONObject jsonObject = (JSONObject) obj;
} catch(Exception e) {
e.printStackTrace();
}
}
web.xml Servlet映射
<servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
因此,這應該公開給http:// localhost:8080 / myapp / rest / jsonService 。 我從一個教程中獲得了一些代碼,但是似乎我想擁有一個返回JSONObject
而不是Response
。 那是對的嗎? 我是在正確的軌道上嗎,還是有一個很好的例子說明我尚未找到的我正在嘗試做的事情?
有多種實現方法。 您可以在第二種方法中嘗試這種方式
將返回類型更改為String
然后使用來將JSONObject
的值作為String
返回
return jsonObject.toString();
在客戶端,Angular JS服務-您可以通過以下方式將String轉換為JSON對象:
var obj = JSON.parse(text);
因此,現在obj
是一個JSON
對象,您可以將其用於進一步處理。
如果您是JavaScript開發人員,並且快速入門是目標,那么我建議您結帳
http://www.dropwizard.io/getting-started.html
這里有一些優點a)許多服務器基礎結構的東西都被隱藏了b)您可以專注於實現細節c)無需弄清楚如何部署它,等等,它是內置的服務器。
為了回答有關返回類型的問題-服務器將返回javax.ws.rs.core.Response-或Response對象的某些其他變體。 這封裝了HTTP狀態代碼http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html之類的內容 。
因此,為了發送回一個簡單的響應,您可以使用類似:
return Response.accepted().entity(String.format("{\"JSON\" : \"%s\"}",value)).build();
將字符串替換為從文件系統讀取的JSON字符串,或從對象生成JSON-無論您選擇哪種毒葯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.