Phy*_*s81 30 java android json
这是我的第一篇文章.作为一名崭露头角的Android开发者,我每天都会在各种主题上阅读SO帖子,但对于这个问题,我没有找到Google或SO的任何帮助.
到目前为止我的研究:
搜索这个问题比正常情况更难,因为搜索引擎似乎并不关心区分大小写,这在这个问题上至关重要.搜索Google只会给我链接到课程本身,旧文章或完全不相关的文章.我得到的最接近的是JSONArray和JSONObject,这是一个完全不同的问题.SO搜索给出了相同的结果.据我所知,SO上的所有相关帖子都引用了JSONObject而不是JsonObject.
Oracle和json.org文档都没有提到另一方,也没有使用org.json库的Android开发人员JSONObject页面.
http://docs.oracle.com/javaee/7/api/javax/json/JsonObject.html
http://www.json.org/javadoc/org/json/JSONObject.html
我本来也发布了一个链接JSONObject的Android参考页面,但我作为新手的代表太低了.
问题的历史:我正在从Oracle页面阅读有关Json编码和解码的内容,我尝试复制并粘贴到我的AndriodStudio IDE中,这会立即产生错误,因为它没有像通常那样建议导入语句.我已经了解到这意味着该类不是内置库的一部分.
问题是我粘贴的代码使用的是JsonObject(来自javax.json库)而不是JSONObject(来自org.json库).当我注意到Android页面和Oracle页面之间存在差异时,我将代码从Json更改为JSON,并且我的IDE立即提供了org.json import语句.
问题:为什么当外部库是Oracle时,Oracle使类不属于默认库?
JSON是旧的,不赞成使用的方式,Json是新的,正确的方式吗?
它们功能相同吗?如果没有,请提供示例?
有些情况对一方更好,有些情况对另一方更好吗?
终极,我应该使用哪些,以及为什么(如果还没有涵盖)?
如果,javax.json,下载该库的最佳(最安全)位置在哪里?
Sam*_*dez 17
有点晚了,但我想就此分享我的看法.
我最近遇到了这个问题,当我找到一个带有两个库的Java项目时,它们同时被使用.
我认为这org.json更容易阅读和使用,主要有两个原因(根据我的需要):
JsonObject是不可变的.您不能将新的键/值对添加到现有的JsonObject(此处引用:javax.json:将新的JsonNumber添加到现有的JsonObject)
相当于打印JsonObject或JsonArray需要几行,而使用JSONObject或JSONArray只需要1行.例:
StringWriter sw = new StringWriter();
Map<String, Object> properties = new HashMap<>();
properties.put(JsonGenerator.PRETTY_PRINTING, true);
JsonWriterFactory writerFactory = Json.createWriterFactory(properties);
JsonWriter jsonWriter = writerFactory.createWriter(sw);
jsonWriter.writeObject(jsonObject); //JsonObject created before
jsonWriter.close();
String prettyPrintedJSON = sw.toString();
Run Code Online (Sandbox Code Playgroud)这是我用来获取写入文件的缩进JSON的代码.而使用org.json我只需要jsonObject.toString(4).
另一个区别是构造函数.你需要一个JsonObjectBuilder用来创建一个JSON javax.json.更进一步,可以避免.
我确定会有更多的差异(不确定是否可以JsonObject从String 创建一个 )但这些是我的想法.
小智 7
正如前面提到的,JSONObject 是由 android 的 API 提供的。JsonObject 专门用于 Java EE 开发,本质上是用于 Web 应用程序和网络功能等。
Android 不从 Oracle Java EE 包中预打包 JsonObject 的原因是因为 javax 可以做的很多事情在 Android 中是不允许的,比如未经许可访问互联网。这意味着导入 javax 的整个 jar 文件会与 Android 发生冲突。
如果您计划使用 Java EE 构建自己的后端,我强烈建议使用 JsonObject 而不是 JSONObject。另一方面,如果您知道预构建的 Rest 服务或类似的东西可以更好地支持 Android 的 JSON。
| 归档时间: |
|
| 查看次数: |
26792 次 |
| 最近记录: |