Object对象转实体对象
在后台发起HTTP请求的时候,响应体传回的一般是Object或者JSON字符串。
方法一
要将Object对象转换成实体类对象可以先使用com.alibaba.fastjson.JSONObject类的toJSONString方法将Object对象转换成JSON字符串,然后再调用JSONObject.parseObject(jsonString,实体类.class)。
这种方法的好处是,系统会根据实体类所拥有的字段去匹配,匹配上的就将值赋给实体类,没匹配上就跳过。建议使用
User user= JSONObject.parseObject(JSONObject.toJSONString(o),User.class);
方法二
使用com.fasterxml.jackson.databind.ObjectMapper类,调用objectMapper.convertValue(obj, 实体类.class)可以直接将object对象解析成对应的实体类,不过缺点很明显,如果object中的某些字段在实体类中无法找到对应的字段,那么就会报错,不推荐。
User user= objectMapper.convertValue(obj, User.class);
java对象转json
spring报错:
No converter found for return value of type: class java.util.ArrayList
spring是没有将ArrayList转换成json的转换器的,需要导入json依赖。
如果是返回值的转json推荐导依赖,日常的业务代码转json,推荐方法四。
<!--jackson依赖--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.11.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.11.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.11.0</version></dependency>
后台java对象转json
方式一:导入jackson依赖之后,直接返回对象就可以转换成json格式。
@ResponseBody@RequestMapping("/queryStudents.do")public List<Student> queryStudents(){List<Student> list= studentService.queryStudents();return list;}
方式二:可以使用ObjectMapper,直接将对象转换成json对象,map对象可以转,一般遇到的对象也可以转。不过该方式注意编码方式,要设置UTF-8编码。
@ResponseBody@RequestMapping(value = "deleteStudent.do",produces = "text/html;charset=UTF-8")public String deleteStudent(int id){int nums=studentService.deleteStudent(id);Student s=new Student();if(nums>0){s.setName("龙哥");}HashMap<Integer,String> map=new HashMap<>();map.put(1,"龙龙long");ObjectMapper om=new ObjectMapper();String res="";try {res=om.writeValueAsString(s);} catch (JsonProcessingException e) {e.printStackTrace();}return res;}
方法三:可以直接手写json格式的字符串,然后返回,里面必须使用双引号,因此要用反转义字符。
String tips="删除失败";if(nums>0){tips="{\"tips\":true}";}return tips;
方式四:可以使用com.alibaba.fastjson.JSONObject
传递一个对象即可将对象转换成json格式。
import com.alibaba.fastjson.JSONObject;
import java.util.HashMap;
import java.util.Map;public class Test {public static void main(String[] args) {Map<String,Object> map=new HashMap<>();map.put("1",1);map.put("2",2);map.put("3",3);map.put("4","sd");//转json格式的字符串String s = JSONObject.toJSONString(map);System.out.println(s);}
}
结果:

















