Object对象转实体对象,java对象转json

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);
    }
}

结果:
Object对象转实体对象,java对象转json_第1张图片

你可能感兴趣的:(java,json,spring)