在单个get中访问嵌套的json数据?

我试图从json对象中获取一个值。 我如何获得第三级json对象:

json格式如下:

feedString = {"level1":[{"level2":{"level3":{"valueIWant":10}}}]} 

代码是:

 JSONObject jsonFeed = new JSONObject(feedString); jsonFeed.get("level1.level2.level3.valueIWant"); 

我可以一次获得嵌套级别吗? 我的钥匙应该是什么样的?

你可以给JSONiJ(Java中的JSON)一个镜头; 它是JSONPath的Java版本,基本上将XPath语法的一个子集映射到JSON对象。

另外,对于其他一些想法,请参阅此SO问题 ; 它看起来像json-path有一个Java版本,并使用点表示法。

另一个选择是在JSONObjects和类似MVEL或OGNL之类的东西之间构建一个EL桥,这将为您提供更熟悉的点符号。 (我以为有一个MVEL / JSON桥,但现在找不到它。)

您应该使用JSONPath。 查看此Java实现http://code.google.com/p/json-path/

现在已经有一段时间了,但我有一些好消息。 刚尝试过豆腐 ,就像魅力一样! 假设你将json转换为map :(任何解析器都可以这样做)

 private Map json; 

所有你需要的是:

 PropertyUtils.getProperty(json, "level1.level2.level3.valueIWant") 

玩的开心 :)