一、java普通对象和json字符串的互转

java对象---->json

首先创建一个java对象:

public class Student {//姓名private String name;//年龄private String age;//住址private String address;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + ", address="+ address + "]";}
}

现在java对象转换为json形式:

public static void convertObject() {Student stu=new Student();stu.setName("JSON");stu.setAge("23");stu.setAddress("北京市西城区");//1、使用JSONObjectJSONObject json = JSONObject.fromObject(stu);//2、使用JSONArrayJSONArray array=JSONArray.fromObject(stu);String strJson=json.toString();String strArray=array.toString();System.out.println("strJson:"+strJson);System.out.println("strArray:"+strArray);}

定义了一个Student的实体类,然后分别使用了JSONObject和JSONArray两种方式转化为JSON字符串,下面看打印的结果:

json-->javabean

上面说明了如何把java对象转化为JSON字符串,下面看如何把JSON字符串格式转化为java对象,

首先需要定义两种不同格式的字符串,需要使用\对双引号进行转义。

public static void jsonStrToJava(){//定义两种不同格式的字符串String objectStr="{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市西城区\"}";String arrayStr="[{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市西城区\"}]";//1、使用JSONObjectJSONObject jsonObject=JSONObject.fromObject(objectStr);Student stu=(Student)JSONObject.toBean(jsonObject, Student.class);//2、使用JSONArrayJSONArray jsonArray=JSONArray.fromObject(arrayStr);//获得jsonArray的第一个元素Object o=jsonArray.get(0);JSONObject jsonObject2=JSONObject.fromObject(o);Student stu2=(Student)JSONObject.toBean(jsonObject2, Student.class);System.out.println("stu:"+stu);System.out.println("stu2:"+stu2);}

 运行结果:

从上面的代码中可以看出,使用JSONObject可以轻松的把JSON格式的字符串转化为java对象,但是使用JSONArray就没那么容易了,因为它有“[]”符号,所以我们这里在获得了JSONArray的对象之后,取其第一个元素即我们需要的一个student的变形,然后使用JSONObject轻松获得。

二、list和json字符串的互转

下面将list转化为json字符串:

public static void convertListObject() {Student stu=new Student();stu.setName("JSON");stu.setAge("23");stu.setAddress("北京市西城区");Student stu2=new Student();stu2.setName("JSON2");stu2.setAge("23");stu2.setAddress("北京市西城区");//注意如果是list多个对象比需要使用JSONArrayJSONArray array=JSONArray.fromObject(stu);String strArray=array.toString();System.out.println("strArray:"+strArray);}

运行结果为:strArray:[{"address":"北京市西城区","name":"JSON","age":"23"},{"address":"北京市西城区","name":"JSON2","age":"23"}]

如果使用JSONObject进行转换会出现:Exception in thread "main" net.sf.json.JSONException: 'object' is an array. Use JSONArray instead

下面将json串转换为list

public static void jsonToList(){String arrayStr="[{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市西城区\"},{\"name\":\"JSON2\",\"age\":\"24\",\"address\":\"北京市西城区\"}]";//转化为listList<Student> list2=(List<Student>)JSONArray.toList(JSONArray.fromObject(arrayStr), Student.class);for (Student stu : list2) {System.out.println(stu);}//转化为数组Student[] ss =(Student[])JSONArray.toArray(JSONArray.fromObject(arrayStr),Student.class);for (Student student : ss) {System.out.println(student);}}

运行结果为:

三、map和json字符串的互转

map转化为json字符串

public static void mapToJSON(){Student stu=new Student();stu.setName("JSON");stu.setAge("23");stu.setAddress("中国上海");Map<String,Student> map=new HashMap<String,Student>();map.put("first", stu);//1、JSONObjectJSONObject mapObject=JSONObject.fromObject(map);System.out.println("mapObject:"+mapObject.toString());//2、JSONArrayJSONArray mapArray=JSONArray.fromObject(map);System.out.println("mapArray:"+mapArray.toString());}

运行结果:

json字符串转化为map

public static void jsonToMap(){String strObject="{\"first\":{\"address\":\"中国上海\",\"age\":\"23\",\"name\":\"JSON\"}}";//JSONObjectJSONObject jsonObject=JSONObject.fromObject(strObject);Map map=new HashMap();map.put("first", Student.class);//使用了toBean方法,需要三个参数MyBean my=(MyBean)JSONObject.toBean(jsonObject, MyBean.class, map);System.out.println(my.getFirst());
}  

注意在转化为map的时候需要创建一个类,类里面需要有first属性跟json串里面的一样:

使用toBean()方法是传入了三个参数,第一个是JSONObject对象,第二个是MyBean.class,第三个是一个Map对象。通过MyBean可以知道此类中要有一个first的属性,且其类型为Student,要和map中的键和值类型对应,即,first对应键 first类型对应值的类型。

运行结果:

转载于:https://www.cnblogs.com/weihuang6620/p/11021195.html

json与javabean、list、map之间的转化相关推荐

  1. Json,String,Map之间的转换

    前提是String的格式是map或json类型的 String 转Json JSONObject  jasonObject = JSONObject.fromObject(str); String 转 ...

  2. javaBean与Map之间的转换工具

    前言 在日常我们的工作中,很多时候都会将我们的bean转换成Map做一些数据操作,对于这些我们可以写成一个工具类中,以下是我在工作中的bean和Map互转的工具,分享一下,可以直接拷贝过去使用的呦. ...

  3. Map与Json之间的转化

    1.Map转化成JSON package com.dbzhang.demo;import java.io.IOException; import java.util.HashMap; import j ...

  4. IDEA使用GsonFormat完成JSON和JavaBean之间的转换

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达今日推荐:分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!个人原创100W +访问量博客:点 ...

  5. java fastjson vector转为json_java对象与Json字符串之间的转化(fastjson)

    public class test { public static void main(string[] args) { // 实现java对象与json字符串之间的转化 // 1. person对象 ...

  6. jsonArray:JavaBean,List,Map转成json格式(轉+整理)

    JSON与JAVA数据的转换 JavaBean,List,Map转成json格式 JS解析json数据(如何将json字符串转化为数组) 需要四個包: commons-beanutils-1.8.3. ...

  7. java对象与Json字符串之间的转化(fastjson)

    1. 首先引入jar包 在pom.xml文件里加入下面依赖: <dependency><groupId>com.alibaba</groupId><artif ...

  8. map怎么转化dto_java实现Object和Map之间的转换3种方式

    利用commons.BeanUtils实现Obj和Map之间转换,这种是最简单,也是最经常用的 public static Object mapToObject(Map map, Class> ...

  9. JavaBean与Map互转

    在实际开发过程中,经常碰到需要进行对象与map之间互转的问题,其实对于对象.Map 之间进行互转有很多种方式,下面我们一起来梳理一下: 利用 JSON 工具包,将对象转成字符串,之后再转成 Map,这 ...

最新文章

  1. 恢复误删的进程在使用的文件【转】
  2. 启动mysql服务是报错找不到pid_mysql报错 The server quit without updating PID file
  3. ​EMC存储产品介绍分析(二):大数据利器Isilon (1)
  4. Ubuntu21.04开机自动挂载Windows硬盘分区
  5. 今晚19:15,商汤校招空宣准点开播 | 你想知道的校招资讯都在这里!
  6. NHibernate 3.0在PetShop 3层架构中的应用 系列
  7. Nagios监控系统详解
  8. 硬盘分区模式gpt改成mbr模式_系统硬盘gpt转换的操作方法
  9. Kubernetes 权限管理
  10. 6.程序员的自我修养---可执行文件的装载与进程
  11. Chrome浏览器安装扩展程序后菜单栏图标不显示
  12. 本地图文直接复制到动易CMS编辑器中
  13. Rust异步之Future
  14. 2021-06-05 高效的wms仓储管理系统是关键
  15. 我的世界java村民繁殖_教程/村民养殖 - Minecraft Wiki,最详细的官方我的世界百科...
  16. VMware中共享文件夹功能的使用(ubuntu)
  17. 电商交易背景知识合集第一季
  18. 一篇个人原厂的非主流火星文
  19. VM虚拟机:VMware Kernel Module Updater
  20. html表单元素的colspan和rowspan合并单元格

热门文章

  1. TimSort算法分析
  2. C++学习003-#define 自定义宏
  3. 灰盒测试—数据库软件
  4. yaml 文件格式简介
  5. Unity3d HDR和Bloom效果(高动态范围图像和泛光)
  6. 计算机视觉:让冰冷的机器看懂这个多彩的世界
  7. Android中selector的使用
  8. C# 3.0下有限状态机的一种优雅的实现
  9. 在Windows Mobile和Wince(Windows Embedded CE)下进行Native C++开发,如何取出当前执行文件的路径和调用模块的路径...
  10. taglist go语言支持