ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java可以这样处理json,你还不知道吗?

2021-06-03 21:05:55  阅读:275  来源: 互联网

标签:Java String 处理 jsonObject JSONArray json jsonArr name


今天要说的是JSONObject和JSONArray这两个类,这两个类可以很方便的将json格式的字符串,map或者list转换为json,首先介绍下这两个类。

JSONObject是json对象,就是一个键对应一个值,因为是对象,所以使用的是{}花括号,如:{name:zhangsan};

JSONArray是json数组,因为是数组,所以使用的是[]中括号,数组里面的项也是json键值对格式的。

json对象添加的是键值对,JSONArray中是json对象。

  1. public static void main(String[] args) {

  2. JSONObject jsonObject=new JSONObject();

  3. JSONArray jsonArr=new JSONArray();

  4.  
  5. jsonObject.put("name", "zhangsan");

  6. jsonArr.add(jsonObject);

  7.  
  8. System.out.println(jsonObject);

  9. System.out.println(jsonArr);

  10. }

运行结果:

Java可以这样处理json,你还不知道吗?

运行结果

我们可以将map转为json对象或者json数组,代码如下:

  1. public static void main(String[] args) {

  2. Map

  3. paramMap.put("name", "zhangsan");

  4. JSONObject jsonObject = JSONObject.fromObject(paramMap);

  5. JSONArray jsonArr = JSONArray.fromObject(paramMap);

  6.  
  7. System.out.println(jsonObject);

  8. System.out.println(jsonArr);

  9. }

运行结果:

Java可以这样处理json,你还不知道吗?

运行结果

json格式字符串转json对象或者json数组,代码如下:

  1. public static void main(String[] args) {

  2. String jsonStr="{name:'zhangsan',age:'18'}";

  3. String jsonArrStr="[{name:'zhangsan',age:'18'}]";

  4.  
  5. JSONObject jsonObject = JSONObject.fromObject(jsonStr);

  6. JSONArray jsonArr = JSONArray.fromObject(jsonArrStr);

  7.  
  8. System.out.println(jsonObject);

  9. System.out.println(jsonArrStr);

  10. }

运行结果:

Java可以这样处理json,你还不知道吗?

运行结果

注意:这里的字符串键所对应的值一样要有单引号或者双引号,否则会报错,双引号要转义,这里为了方便的加单引 号,键的话加不加单双引号都行。

List转JSONArray,代码如下:

先定义一个Student类:

  1. public class Student {

  2. private String name;

  3. private Integer age;

  4. public String getName() {

  5. return name;

  6. }

  7. public void setName(String name) {

  8. this.name = name;

  9. }

  10. public Integer getAge() {

  11. return age;

  12. }

  13. public void setAge(Integer age) {

  14. this.age = age;

  15. }

  16. }

main方法:

  1. public static void main(String[] args) {

  2. Student student=new Student();

  3.  
  4. student.setName("zhangsan");

  5. student.setAge(18);

  6.  
  7. List

  8. list.add(student);

  9. JSONArray jsonArr = JSONArray.fromObject(list);

  10.  
  11. System.out.println(jsonArr);

  12. }

运行结果:

Java可以这样处理json,你还不知道吗?

运行结果

List的泛型是Map道理也是一样的。

那么,问题来了,日常开发的并不单单满足于这些,我们还要取值,下面来看看怎么取值。

  1. public static void main(String[] args) {

  2. Map

  3. paramMap.put("name", "zhangsan");

  4. paramMap.put("age", 18);

  5.  
  6. List<Map

  7. list.add(paramMap);

  8.  
  9. JSONArray jsonArr = JSONArray.fromObject(list);

  10. JSONObject jsonObject = JSONObject.fromObject(paramMap);

  11.  
  12. //以下两种方式都能通过类型去获取值,这里只要是获取String类型

  13. //第一种取值方法(JSONArray只能通过索引json对象)

  14. String jsonStr = jsonArr.getString(0);

  15. //第二种取值方法

  16. Object obj = jsonArr.optString(0);

  17.  
  18. System.out.println("jsonArr.getString="+jsonStr);

  19. System.out.println("jsonArr.optString="+obj);

  20.  
  21. //jsonObject可以通过key取值

  22. String nameGet = jsonObject.getString("name");

  23. String nameOpt = jsonObject.optString("name");

  24.  
  25. System.out.println("jsonObject.getString="+nameGet);

  26. System.out.println("jsonObject.optString="+nameOpt);

  27. }

运行结果:

Java可以这样处理json,你还不知道吗?

顺便提一下,JSONObject和JSONArray这两个类在这里都是net.sf.json包下的,阿里巴巴也有JSONObject和JSONArray这两个类,有兴趣的读者可以去研究下。

最后感谢各位看官观看本篇文章,如果觉得文章还行的话可以点点关注,我会经常分享,我们共同进步。

Java可以这样处理json,你还不知道吗?

标签:Java,String,处理,jsonObject,JSONArray,json,jsonArr,name
来源: https://blog.51cto.com/u_15254813/2854296

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有