我是一名前端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
的方法。那是对的吗?我是在正确的轨道上,还是有一个非常好的例子,说明我还没有找到我想要做的事情?
答案 0 :(得分:1)
有多种方法可以做到这一点。你可以在第二种方法中尝试这种方式
将返回类型更改为String
,并使用
JSONObject
的值作为String
返回
return jsonObject.toString();
在客户端,Angular JS服务 - 您可以通过
将String转换为JSON对象var obj = JSON.parse(text);
因此,现在obj
是一个JSON
对象,您可以将其用于进一步处理。
答案 1 :(得分:0)
如果您是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 - 你选择的毒药是什么。