【发布时间】:2017-12-20 18:14:07
【问题描述】:
我最近开始使用 Java,在 Perl、Ruby、JavaScript 和 bash 方面有很长的背景,我从服务中获取 JSON 对象并希望用 Java 处理它。
我的 JSON 对象如下所示:
{
"stores": {
"store": [
{
"id": 123,
"name": "My Store Name",
"address": {...},
"locationNumber": 4567,
"storeNumber": 890,
"divisionId": "7",
"schedule": {...},
"attributes": {...},
"features": {...},
...
我有一个服务模块,它返回用于存储的 JSONArray,我可以使用以下表达式获取我想要的数据片段:
storesData.getJSONObject(i).getString("name") + "\n";
或
Assert.assertTrue(attributes.getJSONObject(j).getJSONArray("value").get(0).equals("TRUE"))
现在我想从数组中选择一个存储(按名称)并返回另一个 JSONArray,该存储仅作为数组中的唯一元素。所以我编码了这个:
for(int i = 0; i < storesData.length(); i++) {
JSONObject jObj = storesData.get(i);
---
但它没有说storesData.get(i) 不是JSONObject。我不得不像这样转换结果:
JSONObject jObj = (JSONObject) storesData.get(i);
即使在调试器 (IntelliJ-IDEA) 中,这一行:
storesData.get(i).getClass()
报告了一个JSONObject类。 更新截图 Screenshot
这到底是怎么回事?
【问题讨论】:
标签: java json deserialization