JSON简介

亦凉 2024-03-30 09:31 119阅读 0赞

1.什么是json

JSON:(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。目前,Json处于数据交换语言的王者地位.

1.1 json的特点

(1)json是一种轻量级的数据交换格式
(2)json采用完全独立于计算机语言和操作系统的平台,不同的编程语言和操作系统json数据是一致的
(3)json易于阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输效率)

1.2 xml和json的区别

(1)xml:

1.json与js对象的转换

  1. <script type="text/javascript">
  2. // js对象
  3. var obj = {
  4. name: "亚瑟", age: 23, address: "上海" };
  5. document.write(obj.name + "<br/>");
  6. var obj2 = {
  7. users: [{
  8. name: "鲁班", age: 21, address: "北京" },
  9. {
  10. name: "后裔", age: 26, address: "广州" }]
  11. };
  12. document.write(obj2.users[0].address + "<br/>");
  13. // json转换为js对象(方式一)
  14. var test1 = '{"name":"后裔","age":25}';
  15. var obj3 = eval("(" + test1 + ")"); //必须带圆括号
  16. document.write("name=" + obj3.name + ",age=" + obj3.age + "<br/>");
  17. // json转换为js对象(方式二)
  18. var obj4 = JSON.parse('{ "name":"李白", "age":18, "address":"北京" }');
  19. document.write(obj4.name + "<br/>");
  20. </script>

注意:
(1)有些浏览器不支持JSON.parse这个方法,可以到官网下载json2.js添加到你的hlml中就可以了。
(2)为什么要 eval这里要添加 eval(“(” + test1 + “)”)//”呢?
原因在于:eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性
的将它转换成一种表达式。
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将 括号内的表达式(expression)转化为对象,而不是作为语(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始
和结束标记,那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的:
alert(eval(“{}”); // return undefined
alert(eval(“({})”);// return object[Object]

2.Json与Java对象的转换

(1)使用 alibaba 的 fastJson

  1. <!--json-->
  2. <dependency>
  3. <groupId>com.alibaba</groupId>
  4. <artifactId>fastjson</artifactId>
  5. <version>1.2.28</version>
  6. </dependency>

(2)实例

  1. public class MyJson {
  2. public static String jsonmap = "{\"001\":{\"name\":\"xiaohong\",\"password\":\"654321\"},\"002\":[{\"$ref\":\"$.001\"},{\"name\":\"xixi\",\"password\":\"789\"}]}";
  3. public static String jsonuser = "{\"name\":\"xiaohong\",\"password\":\"654321\"}";
  4. public static String jsonlist = "[{\"name\":\"xiaohong\",\"password\":\"654321\"},{\"name\":\"xixi\",\"password\":\"789\"}]";
  5. public static void main(String[] args) {
  6. User user = new User();
  7. user.setName("xiaohong");
  8. user.setPassword("654321");
  9. List<User> list = new ArrayList<User>();
  10. list.add(user);
  11. list.add(new User("xixi","789"));
  12. Map map = new HashMap();
  13. map.put("001",user);
  14. map.put("002",list);
  15. // 1. json字符串 转换为 java 对象
  16. // toJsonString - java对象转换为json字符串
  17. System.out.println(JSONObject.toJSONString(user));
  18. System.out.println(JSONObject.toJSONString(list));
  19. System.out.println(JSONObject.toJSONString(map));
  20. // toJavaObject - json字符串转换为java对象
  21. System.out.println(JSONObject.parseObject(jsonuser,User.class));
  22. List list1 = JSONObject.parseObject(jsonlist, List.class);
  23. for(int i=0;i<list1.size();i++) {
  24. System.out.println(JSONObject.parseObject(JSONObject.toJSONString(list1.get(i)),User.class));
  25. }
  26. Map map1 = JSONObject.parseObject(jsonmap, Map.class);
  27. Iterator iterator = map1.entrySet().iterator();
  28. while (iterator.hasNext()) {
  29. Map.Entry entry= (Map.Entry) iterator.next();
  30. System.out.println("key :"+entry.getKey()+" value: " + entry.getValue());
  31. }
  32. // Json -- 实体类转换为json字符串
  33. System.out.println(JSON.toJSONString(user));
  34. System.out.println(JSON.toJSONString(list));
  35. System.out.println(JSON.toJSONString(map));
  36. // json -- json 转 java对象
  37. System.out.println(JSON.parseObject(jsonuser,User.class));
  38. List list2 = JSON.parseObject(jsonlist, List.class);
  39. for(int i=0;i<list2.size();i++) {
  40. System.out.println(JSON.parseObject(JSON.toJSONString(list1.get(i)),User.class));
  41. }
  42. Map map2 = JSON.parseObject(jsonmap, Map.class);
  43. Iterator iterator2 = map1.entrySet().iterator();
  44. while (iterator2.hasNext()) {
  45. Map.Entry entry= (Map.Entry) iterator2.next();
  46. System.out.println("key :"+entry.getKey()+" value: " + entry.getValue());
  47. } } }

3.使用Java修改json字符串(JSON解析库使用Jackson)

(1)替换json字符串,指定的值

  1. import com.alibaba.fastjson.JSONArray;
  2. import com.alibaba.fastjson.JSONObject;
  3. public class Main {
  4. public static void main(String[] args) {
  5. String jsonStr = "{\"code\":0,\"msg\":\"\",\"count\":3042,\"data\":[{\"UPN\":\"WR1.04.046.0166300023032100120230316104\",\"PN\":\"1.04.046.0166\",\"Lot\":null,\"DC\":\"20230316\",\"Qty\":3000,\"PositionCode\":\"1-1-27-1\",\"CreateTime\":\"2023-10-23 08:49:00\"},{\"UPN\":\"WR1.04.046.0166300023032100120230316512\",\"PN\":\"1.04.046.0166\",\"Lot\":null,\"DC\":\"20230316\",\"Qty\":3000,\"PositionCode\":\"1-1-27-2\",\"CreateTime\":\"2023-10-23 08:49:12\"},{\"UPN\":\"WR1.04.046.0166300023032100120230316434\",\"PN\":\"1.04.046.0166\",\"Lot\":null,\"DC\":\"20230316\",\"Qty\":3000,\"PositionCode\":\"1-1-27-3\",\"CreateTime\":\"2023-10-23 08:49:24\"},{\"UPN\":\"WR1.04.046.0166300023032100120230316999\",\"PN\":\"1.04.046.0166\",\"Lot\":null,\"DC\":\"20230316\",\"Qty\":3000,\"PositionCode\":\"1-1-27-5\",\"CreateTime\":\"2023-10-23 09:05:02\"},{\"UPN\":\"WR1.04.042.0074273022120800120221205927\",\"PN\":\"1.04.042.0074\",\"Lot\":null,\"DC\":\"20221205\",\"Qty\":2730,\"PositionCode\":\"1-1-1-3\",\"CreateTime\":\"2023-10-25 12:51:21\"}]}";
  6. JSONObject jsonObject = JSONObject.parseObject(jsonStr);
  7. jsonObject.put("msg", "替换后的值");
  8. System.out.println(jsonObject.toJSONString());
  9. }
  10. }

(2)替换json字符串的key的值

  1. import com.alibaba.fastjson.JSONArray;
  2. import com.alibaba.fastjson.JSONObject;
  3. public class Main {
  4. public static void main(String[] args) {
  5. String jsonStr = "{\"code\":0,\"msg\":\"\",\"count\":3042,\"data\":[{\"UPN\":\"WR1.04.046.0166300023032100120230316104\",\"PN\":\"1.04.046.0166\",\"Lot\":null,\"DC\":\"20230316\",\"Qty\":3000,\"PositionCode\":\"1-1-27-1\",\"CreateTime\":\"2023-10-23 08:49:00\"},{\"UPN\":\"WR1.04.046.0166300023032100120230316512\",\"PN\":\"1.04.046.0166\",\"Lot\":null,\"DC\":\"20230316\",\"Qty\":3000,\"PositionCode\":\"1-1-27-2\",\"CreateTime\":\"2023-10-23 08:49:12\"},{\"UPN\":\"WR1.04.046.0166300023032100120230316434\",\"PN\":\"1.04.046.0166\",\"Lot\":null,\"DC\":\"20230316\",\"Qty\":3000,\"PositionCode\":\"1-1-27-3\",\"CreateTime\":\"2023-10-23 08:49:24\"},{\"UPN\":\"WR1.04.046.0166300023032100120230316999\",\"PN\":\"1.04.046.0166\",\"Lot\":null,\"DC\":\"20230316\",\"Qty\":3000,\"PositionCode\":\"1-1-27-5\",\"CreateTime\":\"2023-10-23 09:05:02\"},{\"UPN\":\"WR1.04.042.0074273022120800120221205927\",\"PN\":\"1.04.042.0074\",\"Lot\":null,\"DC\":\"20221205\",\"Qty\":2730,\"PositionCode\":\"1-1-1-3\",\"CreateTime\":\"2023-10-25 12:51:21\"}]}";
  6. JSONObject jsonObject = JSONObject.parseObject(jsonStr);
  7. int count = jsonObject.getIntValue("count");
  8. jsonObject.put("total", count);
  9. jsonObject.remove("count");
  10. System.out.println(jsonObject.toJSONString());
  11. }
  12. }

发表评论

表情:
评论列表 (有 0 条评论,119人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JSON简介

    1.什么是json JSON:(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript(欧洲计

    相关 JSON简介

    JSON简介 json是什么? json是JavaScript Object Notation的简写,简单点来说就是一种轻量级的数据交换格式。起初来源于JavaScri

    相关 JSON简介

    概述 JSON(JavaScript Object Notation)是一种由道格拉斯·克罗克福特构想设计、轻量级的数据交换语言,以文字为基础,且易于让人阅读。 尽管J

    相关 JSON简介

    本文主要介绍 JSON 的相关知识。 1. 概述 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人们阅读和编写,同时

    相关 JSON 简介

    json 一、什么是json? JSON(`JavaScript Object Notation`) 是一种轻量级的数据交换格式。 JSON是用字符串来表示Ja