当前位置: 首页 > 知识库问答 >
问题:

用哪一个?来自org.json的JSONObject与来自javax.json的JSONObject

锺离声
2023-03-14

这是我的第一个帖子。作为一名初出茅庐的Android开发者,我几乎每天都在阅读各种主题的SO帖子,但对于这个问题,我没有从谷歌那里找到任何帮助。

我到目前为止的研究:
搜索这个问题比正常情况要难,因为搜索引擎似乎不关心大小写敏感性,而大小写敏感性在这个问题中是至关重要的。搜索谷歌只给了我类本身的链接,旧文章,或者完全不相关的文章。我得到的最接近的是JSONArray和JSONObject,这是一个完全不同的问题。所以搜索得到了同样的结果。据我所知,SO上所有相关的帖子都引用了JSONObject而不是JSONObject。

Oracle和json.org文档都没有提到另一面,使用org.json库的Android developer JSONObject页面也没有提到。

问题是我粘贴的代码使用的是JsonObject(来自javax.json库),而不是JsonObject(来自org.json库)。当我注意到Android页面和Oracle页面在大小写方面的差异时,我将代码从Json修改为Json,并且我的IDE立即提供org.Json import语句。

问题:当外部库是默认库时,为什么Oracle生成的类不是默认库的一部分?
JSON是旧的、不推荐使用的方法,而JSON是新的、正确的方法吗?
它们功能相同吗?如果不是,请提供示例?
是否有些情况对其中一种更好,有些情况对另一种更好?
最终,我应该使用哪种,为什么(如果尚未涉及)?
如果,javax.json,下载该库的最佳(最安全)位置在哪里?)?

共有1个答案

亢琦
2023-03-14

有点晚了,但我想分享一下我的看法。

我最近遇到了这个问题,当时我发现一个Java项目同时使用了这两个库,而且它们同时被使用。

我认为org.json更容易阅读和使用,主要有两个原因(根据我的需要):

只需要几行就可以很好地打印一个JsonObject或JsonArray,而使用JsonObject或JsonArray只需要一行。示例:

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();

这是我用来让缩进的JSON写入文件的代码。对于org.json,我只需要jsonobject.toString(4)

另一个区别是构造函数。您将需要JSONObjectBuilder来使用javax.JSON创建一个JSON。可以避免的又多了一步。

 类似资料:
  • 问题内容: 这是我的第一篇文章。作为一名崭新的Android开发人员,我几乎每天都阅读有关各种主题的SO帖子,但是对于这个问题,我没有从Google或SO那里获得任何帮助。 到目前为止,我的研究是: 搜索这个问题比平常要困难,因为搜索引擎似乎并不关心区分大小写,这在此问题中至关重要。搜索Google只会给我指向类本身,旧文章或完全不相关的文章的链接。我得到的最接近的是JSONArray vsJSO

  • 如何修改此ffmpeg字符串以生成具有不同视频比特率的多个输出?这是为了在yadif=1消耗大量电力时节省时间。而且,无法让它在windows中接受yadif_cuda。 ffmpeg-y-f lavfi-i anullsrc=cl=mono:sample_rate=48000-i“test.mxf”-vf yadif=1-s 1920:1080-c:v h264-nvenc-强制关键帧“expr

  • 问题内容: 我到处都在搜寻,但似乎找不到清晰的答案… 服务器(我的问题是glassfish)注入用@Context注释的实际objets的机制是什么?更具体地说,如果我想编写一个类似以下内容的类: 那我该怎么办呢?实例化MyObject的位置在哪里,由谁执行,如何执行? 编辑:我看过类似以下内容: 在JAX-RS中使用@ Context,@Provider和ContextResolver http

  • 我试着把这个角色的激动人心的部分 我尝试过XPath,但它不起作用,因为在将所有内容输出为XML之前,我必须生成DigestValue

  • 问题内容: 使用的我可以将任意的数据到数据的URL。有没有办法使用内置的浏览器API 将数据URL转换回实例? 问题答案: 用户Matt一年前提出了以下代码如何在javascript中将dataURL转换为文件对象?,这可能对您有帮助 编辑:正如一些评论者所报道的,BlobBuilder已被弃用了一段时间。这是更新的代码:

  • 问题内容: 由于某种原因,登录完成后无法重定向到/ blog。在我的登录控制器中,我有以下内容。 jQuery Ajax 更新为工作代码 问题答案: AJAX之后,您将无法进行重定向。您需要自己使用Javascript完成。 服务器 客户 这应该工作。