PLN*_*ech 5 java parsing android json
我正在尝试实现给定any JSONObject和path 的函数,该函数String将返回与该路径对应的对象属性。
例如,给定以下json:
{
"name": "John",
"friends": [
{"name": "Paul",
"age":42},
{"name": "Peter",
"age":24}
],
"address": {"city": "London"}
}
Run Code Online (Sandbox Code Playgroud)
getAttribute(jsonObject, "name") 应该回来 "John"getAttribute(jsonObject, "address.city") 应该回来 "London"getAttribute(jsonObject, "friends[0].name") 应该回来 "Paul"请注意,此JSON只是一个示例,jsonObject没有预定义的结构,可以表示任何有效的json。
我编写了实现前两种情况的第一个版本,但是处理数组和多级数组"foo[0][0].bar"给此函数带来了很多复杂性。
Stefan Goessner 的JSONPath 标准涵盖了更复杂的语法,但它也处理“经典 javascript”JSON 路径语法。
使用JayWay 的 Java 实现,回答这个问题很简单:
public String getAttribute(JSONObject json, String path) {
return JsonPath.read(json.toString(), path);
}
Run Code Online (Sandbox Code Playgroud)