【发布时间】:2011-12-18 23:02:59
【问题描述】:
我正在开发一个安卓应用程序。 我必须在 PHP 中构建一个 API,它提供以下 JSON 服务
[{"id":"1","number":"2"},{"id":"3","number":"4"},{"id":"5","number":"6"},{"id":"7","number":"8"}]
我正在使用 httpClient 完成 php(Web 服务器)中的连接部分,并将其保存为字符串。
现在我想将它保存在本地集合中(我使用 hashmap !!!不知道这是否是最好的!!!欢迎任何建议)。因为我的 jsonobject 定义的数组我想声明以下内容:@987654323 @
一般的想法是在integer 中保存一个索引,并在LinkedHashMap<String, String> 中保存每个jsonobject。我想成为一个 hashmap 的实例:
hashmap[0] = {"id":"1","number":"2"}
hashmap[1] = {"id":"3","number":"4"}
hashmap[2] = {"id":"5","number":"6"}
失败的代码:
JSONObject tempjson;
hashmap = new HashMap<Integer, LinkedHashMap<String,String>>();
LinkedHashMap<String, String> linkedmap = new LinkedHashMap<String, String>();
for(int i=0;i<jsonarray.length();i++)
{
JSONObject tempjsonobject = jsonarray.getJSONObject(i);
linkedmap.put("id", tempjsonobject.getString("id"));
linkedmap.put("number", tempjsonobject.getString("id"));
hashmap.put(i, linkedmap);
}
Linkedhashmap 总是最后一个条目 --> "id":"7","number":"8"
但如果我在for loop 内声明LinkedHashMap<String, String> linkedmap = new LinkedHashMap<String, String>();,它会起作用。
谁能解释一下为什么会这样?
【问题讨论】:
-
为什么不用像jackson.codehaus.org这样的真正的JSON解析库?
-
为什么不对 JSON 数组使用数组类型呢?
-
因为json太简单,重复值的数组。虽然,我想了解为什么linkedhasmap需要在for循环中澄清以填充hashmap?????