更新:我应该立即提到这一点:我首先考虑了Java/JSON映射框架,但我的经理不希望我向项目添加任何更多依赖项,因此这是一个选项.该JSON-Java的罐子已经在我们的类路径,这样我就可以使用,但仍然没有看到过的树木如何可以使用森林.
我的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"}}
Run Code Online (Sandbox Code Playgroud)
我正在寻找从这个JSON字符串中挑选特定值的最简单,最有效,最可靠的方法,并将它们聚合成一个List<Long>.
具体来说,我正在寻找,提取和聚集所有"的IDS ",即,所有你看到的数字值available,approved,reviewable和pending领域.这些字段中的每一个都是0+"id"的数组.因此,在上面的示例中,我们看到了以下的ID细分:
available:有1个id(299258)approved:有0个IDreviewable:有3个ID(930932,283982,782821)pending:有2个ID(298233,329449)我需要一些Java代码来运行并生成一个List<Long>包含所有这6个提取的ID,没有特定的顺序.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());
...
Run Code Online (Sandbox Code Playgroud)
使用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);
}
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4033 次 |
| 最近记录: |