Java中常用的json格式转换方法

Java中常用的json格式转换方法

常见工具包:Fastjson、hutool-json、Jackson、Gson。本篇以Fastjson为例

Fastjson教程:
fastjson开源地址
fastjson官方教程
fastjson2.0介绍
JSON最佳实践
fastjson使用教程

Jackson教程:
Jackson使用详解
史上最全的Jackson框架使用教程

涉及对象:
json字符串、JSONObject、JSONArray、对象Bean、字典Map、数组array、列表List

参考:java的json转化

各对象之间互转demo

//带有转义的那种字符串,不带转义的那种会报错
 String jsonStr = "{\"name\":\"zhangsan\",\"age\":\"123\"}";
 // jsonStr <--> JSONObject
 JSONObject jsonObject = JSONObject.parseObject(jsonStr);
//        String jsonObjectStr = jsonObject.toString();
 String jsonObjectStr = JSON.toJSONString(jsonObject);

 // 获取JSONObject属性值
 System.out.println(jsonObject.get("name"));

 // jsonStr <--> bean
 Person person = JSONObject.parseObject(jsonStr, Person.class);  // Person类中名称需要对应好
 System.out.println(person);
 String s = JSON.toJSONString(person);
 System.out.println(s);

 // jsonStr <--> Map
 Map<String, Object> map1 = JSONObject.parseObject(jsonStr, Map.class);
 System.out.println(map1.get("name"));
 String s1 = JSON.toJSONString(map1);
 System.out.println(s1);

 // bean <--> JSONObject
 JSONObject jsonObject1 = (JSONObject) JSONObject.toJSON(person);
 Person person1 = JSONObject.parseObject(JSON.toJSONString(jsonObject1), Person.class);


 // Map <--> JSONObject
 Map<String,String> map2 = new HashMap<String,String>();
 map2.put("name","zhangsan");
 map2.put("age","123");
 map2.put("sex","1");
 String json = JSON.toJSONString(map2);     //map先转string
 JSONObject jsonObject2 = JSONObject.parseObject(json);       //string再转JSONObject
 System.out.println(jsonObject);

 Map map3 = JSON.parseObject(JSON.toJSONString(jsonObject));

 // List<> --> jsonStr
 List<Person> users= new ArrayList<>();
 for (int i=1;i<=5;i++){
     Person user=new Person();
     user.setName("张"+i);
     user.setAge("1"+i);
     users.add(user);
 }
 String strs= JSON.toJSONString(users);
 System.out.println(strs);
 List<Person> personList1 = JSONArray.parseArray(strs, Person.class);
 System.out.println(personList1);

 // jsonStr <--> JSONArray
 String jsonStr1 = "[{\"name\":\"yang\",\"age\":\"12\"},{\"name\":\"tom\",\"age\":\"23\"}]";
 JSONArray jsonArray = JSONArray.parseArray(jsonStr1);
 System.out.println(jsonArray);
//        String s2 = jsonArray.toString();
 String s2 = JSON.toJSONString(jsonArray);
 System.out.println(s2);

 // JSONArray <--> List<>
 List<Person> personList = jsonArray.toJavaList(Person.class);
 System.out.println(personList);
 //list先转JSON,再通过JSONArray的parseArray转成JSONArray
 JSONArray jsonArray1 = JSONArray.parseArray(JSON.toJSONString(personList));

FastJson 读取 json文件里面的内容

参考:
FastJson 读取 json文件里面的内容

二维数组和json之间转化

将二维数组转换为 JSON 字符串

// 数组转json
String[][] arr = {
{"John", "Doe"},
{"Jane", "Doe"},
{"Bob", "Smith"}
};
String jsonStr = JSON.toJSONString(arr);

JSONArray jsonArray = new JSONArray();
for (int i = 0; i < array.length; i++) {
    JSONArray innerArray = new JSONArray();
    for (int j = 0; j < array[i].length; j++) {
        innerArray.put(array[i][j]);
    }
    jsonArray.put(innerArray);
}
String jsonString = jsonArray.toString();

将 JSON 字符串转换为二维数组
要将 JSON 字符串转换为二维数组,我们可以使用 JSONArray 类的静态方法 getJSONArray 和 getInt。首先,我们将 JSON 字符串转换为 JSONArray 对象,然后使用两层循环遍历 JSONArray 对象,并使用 getInt 方法获取每个元素的值,并将其赋值给二维数组。

JSONArray jsonArray = new JSONArray(jsonString);
int[][] array = new int[jsonArray.length()][];
for (int i = 0; i < jsonArray.length(); i++) {
    JSONArray innerArray = jsonArray.getJSONArray(i);
    array[i] = new int[innerArray.length()];
    for (int j = 0; j < innerArray.length(); j++) {
        array[i][j] = innerArray.getInt(j);
    }
}

你可能感兴趣的:(Java,java,json)