[英]Easiest way to extract fields from JSON
更新:我应该立即提到这一点:我首先考虑了Java / JSON映射框架,但是我的经理不希望我向项目添加更多依赖项,因此可以选择。 JSON-Java jar已经在我们的类路径中,因此我可以使用它,但仍然无法通过树了解如何使用它。
我的Java程序正以以下形式传递给JSON(尽管值将一直更改):
{"order":{"booze":"1","handled":"0","credits":"0.6",
"execute":0,"available":["299258"],"approved":[],
"blizzard":"143030","reviewable":["930932","283982","782821"],
"units":"6","pending":["298233","329449"],"hobbit":"blasphemy"}}
我正在寻找从该JSON字符串中挑选特定值并将其聚合到List<Long>
的最简单,有效,肯定的方法。
具体来说,我正在寻求提取和汇总所有“ ids ”,即,您在available
, approved
,可reviewable
和pending
字段中看到的所有数值。 这些字段中的每一个都是一个0+“ ids”的数组。 因此,在上面的示例中,我们看到以下ID细分:
available
:有1个ID(299258) approved
:具有0个ID reviewable
复核:具有3个ID(930932、283982、782821) pending
:有2个ID(298233,329449) 我需要一些Java代码来运行并产生具有所有这6个提取的id的List<Long>
并且没有特定的顺序。 这些ID只需要进入列表即可。
感觉就像一个令人难以置信的复杂正则表达式,我什至不知道从哪里开始。 非常感谢任何帮助。 提前致谢。
IMO最简单的方法是使用json库(例如gson , jackson , json.org等),将de JSON解析为一个对象,并使用所需属性的值创建一个新的List<Long>
。
带有gson的伪代码:
class Order {
long[] available;
long[] approved;
...
}
Order order = gson.fromJson("{ your json goes here }", Order.class);
List<Long> result = new ArrayList<Long>();
result.add(order.getAvailable());
result.add(order.getApproved());
...
带有json.org/java的伪代码:
JSONObject myobject = new JSONObject("{ your json goes here"});
JSONObject order = myobject.getJSONObject("order");
List<Long> result = new ArrayList<Long>();
for (int i=0; i<order.getJSONArray("approved").length(); i++) {
Long value = order.getJSONArray("approved").getLong(i);
result.add(value);
}
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.