一、JsonObject转Map的方法
JsonObject转Map是一种常见的数据类型转换,它可以将一个JsonObject对象转换成一个Map
public MapjsonObjectToMap(JSONObject json) { Map resultMap = new HashMap<>(); for (String key : json.keySet()) { Object value = json.get(key); resultMap.put(key, value); } return resultMap; }
上述代码先创建了一个名为resultMap的HashMap对象,然后通过for循环遍历JsonObject的所有键,将键值对放入resultMap中。遍历的过程中,可以通过json.get(key)获取JsonObject中key对应的value值。
二、JsonObject转Map对象 fastjson
fastjson是Java中最常用的JSON解析库之一,通过fastjson解析Json数据也可以将JsonObject对象转换成Java Map对象。使用该方法,需要将fastjson的依赖添加到项目中,并通过JSON.parseObject将Json字符串解析成JsonObject对象。下面是JsonObject转Map对象的示例代码:
import com.alibaba.fastjson.JSON; import java.util.Map; public class JsonUtil { public MapjsonObjectToMap(JSONObject json) { String jsonString = json.toJSONString(); Map resultMap = JSON.parseObject(jsonString, Map.class); return resultMap; } }
上述代码中,JsonUtil类的jsonObjectToMap()方法首先将JsonObject对象转换成Json字符串,然后通过fastjson的JSON.parseObject()方法将Json字符串转换成Java Map对象。使用fastjson可以大大简化JsonObject转Map的过程。同时,fastjson也支持JsonObject转JavaBean或List等数据类型的转换。
三、JsonObject转Map没有警告
JsonObject转Map过程中,可能会出现警告,如“unchecked”、“rawtypes”等。为了避免这些警告,我们可以使用泛型来约束键值对的类型,例如使用Map
四、JsonObject转Map的6种方法
JsonObject转Map方式有多种,下面介绍6种常用方法:
- 使用for循环遍历JsonObject对象,将其转换成Java Map对象。
- 使用fastjson将JsonObject对象转换成Json字符串,然后通过JSON.parseObject()方法将Json字符串转换成Java Map对象。
- 将JsonObject对象转换成Java Map对象,然后使用EntrySet()方法返回一个键值对集合。
- 将JsonObject对象转换成Java Map对象,然后使用keySet()方法返回一个键集合。
- 将JsonObject对象转换成Java Map对象,然后使用values()方法返回一个值集合。
- 将JsonObject对象转换成Java Map对象,然后使用iterator()方法返回一个迭代器。
五、JsonObject转Map最快的方法
我们可以通过性能测试来比较JsonObject转Map的各种方法的效率。结果表明,fastjson将JsonObject转换成Json字符串,然后通过JSON.parseObject()方法将Json字符串转换成Java Map对象,是最快的方法。
import com.alibaba.fastjson.JSON; import java.util.Map; import org.json.JSONException; import org.json.JSONObject; public class Main { public static void main(String[] args) throws JSONException { //创建JsonObject对象 JSONObject json = new JSONObject(); json.put("name", "Tom"); json.put("age", 18); //测试性能 long time = System.currentTimeMillis(); for(int i=0; i<1000000; i++){ String jsonString = json.toString(); MapresultMap = JSON.parseObject(jsonString, Map.class); } long endTime = System.currentTimeMillis(); System.out.println("fastjson 性能测试:" + (endTime - time)); } }
六、JsonObject转Map集合
JsonObject转Map集合相对来说比较麻烦,需要将JsonObject中的多个键值对转换成一个集合。下面的示例代码可以将JsonObject中的多个键值对转换成一个List集合。
import java.util.ArrayList; import java.util.List; import java.util.Map; import org.json.JSONException; import org.json.JSONObject; public class Main { public static void main(String[] args) throws JSONException { //创建JsonObject对象 JSONObject json = new JSONObject(); json.put("name", "Tom"); json.put("age", 18); //将JsonObject中的所有键值对转换为List集合 List> list=new ArrayList<>(json.entrySet()); //输出List中的所有键值对 for (Map.Entry entry : list) { System.out.println(entry.getKey() + " = " + entry.getValue()); } } }
七、String转JsonObject
在JsonObject转Map之前,我们有时候需要先通过String字符串将Json数据解析成JsonObject对象。下面是将String字符串转换成JsonObject对象的示例代码:
import org.json.JSONException; import org.json.JSONObject; public class Main { public static void main(String[] args) throws JSONException { //将String字符串转换成JsonObject对象 String jsonString = "{name:\"Tom\",age:18}"; JSONObject json = new JSONObject(jsonString); //输出JsonObject对象中的键值对 System.out.println("name = " + json.getString("name")); System.out.println("age = " + json.getInt("age")); } }
八、JsonObject转List
有时候我们需要将JsonObject对象中的多个键值对转换成一个List集合。下面是将JsonObject对象转换成List的示例代码:
import java.util.ArrayList; import java.util.List; import org.json.JSONException; import org.json.JSONObject; public class Main { public static void main(String[] args) throws JSONException { //创建JsonObject对象 JSONObject json = new JSONObject(); json.put("name", "Tom"); json.put("age", 18); //将JsonObject对象中的所有键值对转换为List集合 List