玛卡巴卡的卡巴卡玛 发表于 2024-12-28 14:12:19

【Java Web】JSON 以及 JSON 转换

JSON(JavaScript Object Notation)一种机动、高效、轻量级的数据交换格式,广泛应用于各种数据交换和存储场景。
基本特点
1、简单易用:JSON格式非常简单,易于理解和使用。
2、轻量级:相比XML等其他数据格式,JSON占用的空间更小,传输效率更高。
3、跨平台:JSON是一种纯文本格式,可以轻松地在不同的体系和编程语言之间交换数据。
4、可读性强:JSON格式的数据布局清晰,易于阅读和调试。
数据布局
JSON支持两种数据布局
1、对象(Object):无序的键值对集合,用大括号 {} 包围。键必须是字符串,值可以是恣意有用的JSON数据范例。
{
"name": "John",
"age": 30,
"isStudent": false,
"hobbies": ["reading", "coding", "traveling"]
}
2、数组(Array):有序的值集合,用方括号 [] 包围。数组中的值可以是恣意有用的JSON数据范例。
[
"apple",
"banana",
42,
true,
{
    "name": "Alice",
    "age": 25
}
]
在Java中使用 org.json.JSONObject 类来剖析和天生JSON数据。
import org.json.JSONObject;

// 解析JSON
String jsonString = "{\"name\": \"John\", \"age\": 30}";
JSONObject jsonObject = new JSONObject(jsonString);
System.out.println(jsonObject.getString("name"));// 输出: John

// 生成JSON
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "John");
jsonObject.put("age", 30);
String jsonString = jsonObject.toString();
System.out.println(jsonString);// 输出: {"name":"John","age":30}
转换
fastjson 是阿里巴巴开源的一个高性能的JSON库
https://i-blog.csdnimg.cn/direct/484ff21045094a1b8640077d8fc29fc7.png
导入项目
https://i-blog.csdnimg.cn/direct/75fdf7a048ed4ccebb8cbf960382bc6a.png
1、对象或集合(内套集合也可以)转JSON对象
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

public class User {
    private String name;
    private int age;
    // getter 和 setter 方法
}

public class JsonExample {
    public static void main(String[] args) {
      User user = new User();
      user.setName("John");
      user.setAge(30);

      // 对象转JSON字符串
      String jsonString = JSON.toJSONString(user);
      System.out.println(jsonString);// 输出: {"name":"John","age":30}

      // 对象转JSONObject
      JSONObject json = new JSONObject();
      json.putAll(JSON.parseObject(jsonString));
      System.out.println(json.toJSONString());// 输出: {"name":"John","age":30}
    }
}
2、JSON格式字符串与JSON对象之间的转换
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

public class JsonExample {
    public static void main(String[] args) {
      String j = "{\"goodslist\":[{\"goods_id\":1}],\"name\":\"张三\"}";

      // JSON字符串转JSONObject
      JSONObject jsonObject = JSON.parseObject(j);
      System.out.println(jsonObject.toJSONString());// 输出: {"goodslist":[{"goods_id":1}],"name":"张三"}

      // 或者
      JSONObject jsonObject2 = JSONObject.parseObject(j);
      System.out.println(jsonObject2.toJSONString());// 输出: {"goodslist":[{"goods_id":1}],"name":"张三"}
    }
}
3、JSON字符串-数组范例与JSONArray之间的转换
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;

public class JsonExample {
    public static void main(String[] args) {
      String JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";

      // JSON字符串转JSONArray
      JSONArray jsonArray = JSON.parseArray(JSON_ARRAY_STR);
      System.out.println(jsonArray.toJSONString());// 输出: [{"studentName":"lily","studentAge":12},{"studentName":"lucy","studentAge":15}]
    }
}
4、复杂JSON格式字符串与JSONObject之间的转换
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

public class JsonExample {
    public static void main(String[] args) {
      String j = "{\"goodslist\":[{\"goods_id\":1}],\"name\":\"张三\"}";

      // 复杂JSON字符串转JSONObject
      JSONObject jsonObject = JSON.parseObject(j);
      System.out.println(jsonObject.toJSONString());// 输出: {"goodslist":[{"goods_id":1}],"name":"张三"}
    }
}
5、JSON字符串转JAVA对象
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;

public class User {
    private String name;
    private int age;
    // getter 和 setter 方法
}

public class JsonExample {
    public static void main(String[] args) {
      String j = "{\"name\":\"张三\",\"age\":30}";

      // JSON字符串转User对象
      User user = JSON.parseObject(j, new TypeReference<User>() {});
      System.out.println(user.getName());// 输出: 张三
      System.out.println(user.getAge());   // 输出: 30
    }
}
6、JSON字符串集合转LIST对象
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;

public class Goods {
    private int goods_id;
    // getter 和 setter 方法
}

public class JsonExample {
    public static void main(String[] args) {
      String str = "[{\"goods_id\":1},{\"goods_id\":2}]";

      // JSON字符串集合转List<Goods>对象
      List<Goods> goodslist = JSON.parseObject(str, new TypeReference<ArrayList<Goods>>() {});
      for (Goods goods : goodslist) {
            System.out.println(goods.getGoods_id());
      }
      // 输出: 1
      // 输出: 2
    }
}


[*]JSON字符串转JSON对象:使用 JSON.parseObject() 或 JSONObject.parseObject()。
[*]JSON对象转JSON字符串:使用 JSON.toJSONString() 或 jsonObject.toJSONString()。
[*]JSON字符串转JSONArray:使用 JSON.parseArray()。
[*]JSON字符串转Java对象:使用 JSON.parseObject() 并指定目标类或 TypeReference。
[*]JSON字符串集合转List对象:使用 JSON.parseObject() 并指定 TypeReference。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【Java Web】JSON 以及 JSON 转换