JSON查询语言


11

我有一台返回非常大的JSON消息的服务器,我的客户端应用程序仅依赖于此响应的一部分。客户端应用程序需要检查JSON消息中是否存在“ xyz”属性,并根据结果运行特定的用例。

对于此要求,将整个JSON消息转换为对象听起来对我来说有点昂贵,因此存在这个问题。

是否有像XML一样的标准JSON查询语言?如果是,那么最好的方法是在Java中实现此查询语言。

仅供参考:不能在服务器端更改或添加新服务。


在javascript中,如果使用正确的标头(application / json)发送响应,则JSON响应将是javascript对象。这就是您要的吗?我不确定你的问题。
Florian Margaine '02

@Florian我同意,让我更新我的问题并使它特定于Java。
2012年

然后,我想您已经尝试过json.org/java了?:-)
Florian Margaine 2012年

我一直在想同样的事情。我见过的每个JSON Java库似乎都非常庞大;有沿线的任何JSON.getString(json_string, 'foo.22.bar')(对于在物业“富”名单的22元,财产“栏”,其中包含一个String)
Izkata

或者,JSON baz = new JSON(json_string); baz.getString('foo.22.bar');例如,为避免每次都进行解析
Izkata 2012年

Answers:


6

为什么不只使用JavaScript?(JSON毕竟是Javascript对象符号)。然后,您将不必解析或操作JSON。

编辑看看http://json.org/java

对于此要求,将整个JSON消息转换为对象听起来对我来说有点昂贵,因此存在这个问题。

不是。反序列化一个对象很便宜(自己测试一下)。与外部API进行通信将花费一个数量级。您可以直接操纵字符串,这可能会稍快一些,但会冒着错误,降低可扩展性和降低可读性的风险。成本高。


我更新了问题,并将其设置为特定于Java。
2012年

不能使用javascript,因为客户端应用程序在仅支持LWUIT的Headunit上运行
Farm

2

“测量,不要猜测”。是的,对象序列化和反序列化在理论上是昂贵的,但是您的应用程序的性能目标是什么?如果对象(反序列化)没有将您的演奏提升到无法接受的水平,则不必担心它:-)。当然,关键是要了解性能界限(例如,对用户的响应时间以2秒为单位),并衡量请求/响应周期的每个部分。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.