首先,你的[{"key":"1"},{"key":"2"}]是一个JSON数组格式。如果你有简单的JSON格式,例如{"key1":"1","key2":"2"},你可以使用下面的示例进行转换:public static void main(String[] args) { String jsonString = "{\"key1\":\"1\",\"key2\":\"2\"}";Map map = toMap(...
java将 json数组转map
首先,你的[{"key":"1"},{"key":"2"}]是一个JSON数组格式。如果你有简单的JSON格式,例如{"key1":"1","key2":"2"},你可以使用下面的示例进行转换:
public static void main(String[] args) {
String jsonString = "{\"key1\":\"1\",\"key2\":\"2\"}";
Map map = toMap(jsonString);
for (Map.Entry entry : map.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
System.out.println(key + ":" + value);
}
}
@SuppressWarnings("unchecked")
public static Map toMap(String json) {
Map map = new HashMap();
JSONObject jsonObject = JSONObject.fromObject(json, new JsonConfig());
Iterator keys = jsonObject.keys();
while (keys.hasNext()) {
String key = keys.next();
Object value = jsonObject.get(key);
map.put(key, (T) value);
}
return map;
}
执行结果是你这种数组格式,转换成Map那么同名的key会覆盖的。这意味着,如果数组中有多个对象具有相同的键,那么最后一个对象的值将会被保留。
为了处理JSON数组,你需要先将数组中的每个对象转换成Map,然后再合并。假设你有一个JSON数组,如[{"key":"1"},{"key":"2"}],可以先遍历数组,将每个对象转换成Map,再将所有的Map合并到一个Map中。
例如:
public static void main(String[] args) {
String jsonString = "[{\"key\":\"1\"},{\"key\":\"2\"}]";
Map map = toMap(jsonString);
for (Map.Entry entry : map.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
@SuppressWarnings("unchecked")
public static Map toMap(String json) {
Map map = new HashMap>();
JSONArray jsonArray = JSONArray.fromObject(json);
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
map.put(jsonObject.getString("key"), jsonObject.getString("value"));
}
return map;
}
在上述示例中,我们使用了JSONArray来处理JSON数组,并遍历数组中的每个对象,将每个对象的键值对放入Map中。这种方法可以确保数组中的所有键值对都被正确地转换为Map格式。
需要注意的是,实际开发中,你需要根据实际情况调整代码中的类型和方法,以确保代码能够正确地处理不同的JSON数据格式。2024-12-02