【发布时间】:2017-04-08 13:54:36
【问题描述】:
我正在尝试实现一个函数,给定任何JSONObject 和路径String,将返回与路径对应的对象属性。
例如,给定这个 json:
{
"name": "John",
"friends": [
{"name": "Paul",
"age":42},
{"name": "Peter",
"age":24}
],
"address": {"city": "London"}
}
-
getAttribute(jsonObject, "name")应该返回"John" -
getAttribute(jsonObject, "address.city")应该返回"London" -
getAttribute(jsonObject, "friends[0].name")应该返回"Paul"
请注意,此 JSON 只是一个示例,jsonObject 没有预定义的结构,可以表示任何有效的 json。
我编写了实现前两种情况的第一个版本,但是处理数组和多级数组"foo[0][0].bar" 给这个函数带来了很多复杂性。
是否有推荐的工具/库/方法从给定“复杂”路径的 JSONObject 获取属性?
【问题讨论】:
-
nope.... 有很多很多库.. Gson、Jackson 等
-
请使用 GSON 而不是从路径中获取值,这里您将直接从实体类对象中获取值
-
@ΦXocę웃Пepeúpaツ:我知道这些库存在,但我找不到如何使用这些库从任意
JSONObject获取属性。如果您知道该怎么做,请随时回答问题! -
@AmrutBidri:我无法创建类对象,因为 JSON 会动态变化。似乎
GSON没有提供在给定这样的 json 路径的情况下获取属性的解决方案,但如果我错了,请告诉我! -
@RajeshKushvaha:请解释一下当 JSON 结构随每次调用而变化时我如何使用 POJO。