[英]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.