繁体   English   中英

不能再使用Google App Engine(Java)中的JSONObject了吗?

[英]Can't use JSONObject in Google App Engine (Java) anymore?

半小时前我打开Eclipse编辑一个Google App Engine应用程序,之前一切正常,没有错误,我没有更新任何东西(至少不知情)。

我导入了: com.google.appengine.repackaged.org.json.JSONObject没有错误,但现在我收到此错误:

use of com.google.appengine.repackaged may result in your app breaking without warning

它从未打破过,它随着Eclipse的Google App Engine下载,为什么它现在突然开始? 我怎么能摆脱它呢? (他们所做的改变非常小而且很快,不必使用不同的JSON库会很好)

com.google.appengine.repackaged.*包含应用程序代码不应使用的内部类。

org.json许多库实现,例如JSON-Java 只需在GAE项目中包含其中一个。

AppEngine 1.8.4使用

com.google.appengine.labs.repackaged.org.json.JSONObject

如果你不想从第一原则中弄清楚这一点,这里是一步一步:

  1. https://github.com/douglascrockford/JSON-java获取资源(您可以下载zip,使用Git等)
  2. 在项目json / org / json中创建一个目录并将源代码放在那里。
  3. 在Eclipse中使用“刷新”,以便它查看并编译目录。
  4. 更改所有“import com.google.appengine.repackaged.org.json.xxx;” “import org.json.xxx;” 在你的代码中

不幸的是,这增加了很多警告,但它们似乎确实是无害的。

要摆脱com.google.appengine.repackaged使用,可能会导致您的应用在没有出现警告的情况下中断。 error simple使用完整的包名声明您的类。 它解决了你的问题。

com.google.appengine.repackaged.com.google.gson.JsonObject jsonObject = 
new com.google.appengine.repackaged.com.google.gson.JsonObject();

将我的导入更改为com.google.gson.Gson对我有用。

软件包com.google.appengine.repackaged.com.google.gson已弃用于最新的appengine版本。 因此以下陈述

import com.google.appengine.repackaged.com.google.gson.Gson;
import com.google.appengine.repackaged.com.google.gson.GsonBuilder;
...
Gson gson = new GsonBuilder().create();

你会在appgengine日志中给你以下错误:

java.lang.NoClassDefFoundError: com/google/appengine/repackaged/com/google/gson/JsonElement

您需要使用新的Json库:

1)为gradle文件添加新的依赖项:

compile 'com.google.code.gson:gson:2.8.1' 

2)更换

import com.google.appengine.repackaged.com.google.gson.Gson;
import com.google.appengine.repackaged.com.google.gson.GsonBuilder;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM