简单GAE Java JSON REST服务器

简单GAE Java JSON REST服务器,java,json,google-app-engine,rest,servlets,Java,Json,Google App Engine,Rest,Servlets,我是GAE、JSON、REST和web的新手。我有一个非常简单的GWT/GAE数据存储,我想用它来更新我编写的Android应用程序中的数据。经过一些研究,创建一个RESTful web服务似乎是一个很好的方法,我的Android应用程序将通过发送回JSON格式数据的HTTP请求访问该服务 我一直在寻找一种方法来做到这一点,似乎有很多方法,主要是使用第三方库。有这么多,作为初学者很难做出明智的选择。另外,我的问题非常简单,这将是一个学习在GAE上创建RESTful web服务和JSON的基础知识

我是GAE、JSON、REST和web的新手。我有一个非常简单的GWT/GAE数据存储,我想用它来更新我编写的Android应用程序中的数据。经过一些研究,创建一个RESTful web服务似乎是一个很好的方法,我的Android应用程序将通过发送回JSON格式数据的HTTP请求访问该服务

我一直在寻找一种方法来做到这一点,似乎有很多方法,主要是使用第三方库。有这么多,作为初学者很难做出明智的选择。另外,我的问题非常简单,这将是一个学习在GAE上创建RESTful web服务和JSON的基础知识的好机会。它所需要做的就是从URL返回JSON数据——不创建、不更新、不删除

我想一个简单的Java代码示例或教程要比学习一个复杂的库更有意义。有谁知道一个简单的例子或教程,让我在正确的方向

谢谢

请不要胡闹

== 更新:

在向导提供的GreetingServiceImpl的doGet@Override中,我添加了:

// super.doGet(req, resp);
PrintWriter out = resp.getWriter();
out.println("Hello World");
这似乎奏效了。会这么简单吗?我可以修改这段代码以生成JSON输出来代替“Hello World”字符串吗?我就完成了?

试试Jersey


你的问题有点笼统(不是故意刁难),所以我的回答也是笼统的。尽管我的回答是笼统的,但这些信息应该能为你指明正确的方向。如果您的问题变得更加具体,请编辑您的原始问题或询问另一个问题是否足够具体

我想说最简单的方法是获取Eclipse,并使用GAE Eclipse插件(如果您还没有)

按照此处的说明安装、创建和运行项目:

完成所有这些工作后,在servlet中重写doGet方法,以使用必须访问数据存储的任何代码。一旦有了从数据存储中获取对象的代码,我将使用GSON将结果对象序列化为JSON


同样,这并不是你需要的全部信息。请随意编辑您的问题或评论,并询问更多具体信息。此外,您还提到,您一直在寻找其他第三方库来实现这一点。这里要小心。您必须记住,如果您使用的是google app engine,那么当您部署它时,本地工作的东西可能无法工作。这是一种不便,但这也是谷歌简化应用程序引擎并提供尽可能多的免费主机服务的原因之一。有一个第三方库的列表,这些库已经在Java应用程序引擎环境中进行了战斗测试;但我无法通过粗略的谷歌搜索找到它。我知道它在应用程序引擎文档中的某个地方。而且,为了它的价值,我在app engine中对GSON做了一个小的冒烟测试,它似乎工作得很好。

尝试使用JSONEngine——这个库创建了易于访问的JSON API,用于在Google app engine中存储/检索/更新/删除JSON数据。对每个JSON文档的访问可以设置为特定用户/google电子邮件id only/open id email id only(如google/Yahoo/AOL)

请访问code.google.com/p/jsonegine/

尝试新功能,了解有关此库的更多信息。它们仍然是实验性的,但据我所知,它们工作得非常好


此外,它们非常容易用于您定义的简单目的。如果您使用的是GoogleEclipse插件,您只需创建一个JDO Persistent类,插件就会自动为您生成端点。请参阅谷歌云端点的谷歌Eclipse插件支持。

谢谢。我一直在使用Eclipse。在向导生成的代码中,我看到:公共类GreetingServiceImpl扩展RemoteServiceServlet实现GreetingService{@Override protected void doGet(HttpServletRequest req,HttpServletResponse resp)抛出ServletException,IOException{…这就是您所说的“重写doGet”吗?我添加了//super.doGet(req,resp);PrintWriter out=resp.getWriter();out.println(“Hello World”);是的,我的问题在某些方面是一般性的,但在另一些方面是非常具体的。我正在寻找一个非常具体的示例或教程。然而,在这方面是一般性的,就什么工作提出建议也很感谢。这条doGet看起来很有希望,但我会等待一些测试和对我上述添加内容的反馈,然后再将其标记为已回答。不管怎样,谢谢!!!这似乎是我认为应该存在的简单答案。希望我最终到达那里时这不是海市蜃楼。
我可以修改这段代码来生成JSON输出而不是“Hello World”吗string和I'm done?
这个问题的答案基本上是肯定的。但请确保将您的响应类型设置为json。为此,只需在刷新或关闭响应之前执行
resp.setContentType(“应用程序/json”);