首页 > 技术文章 > Java后台用Map封装返回结果遇到的问题

mxh-java 2019-10-25 16:27 原文

今天在后台写接口返回数据有点复杂,于是就用Map封装数据,结果遇到问题:

import lombok.Getter;
import lombok.Setter;

/**
 * 类注解
 *
 * @author xinhai.ma
 * @date 2019年10月25日 14:31
 */
public class Person {

    @Setter
    @Getter
    private String name;

    @Setter
    @Getter
    private Integer age;

}



/**
 * 类注解
 *
 * @author xinhai.ma
 * @date 2019年10月25日 14:30
 */
@RestController
public class DemoController {

    @GetMapping(value = "/demo.html")
    public Map<Person, List<Person>> demo() {
        Map<Person, List<Person>> result = new HashMap<>();
        Person key = new Person();
        key.setName("key");
        key.setAge(12);

        List<Person> value = new ArrayList<>();
        value.add(key);
        value.add(key);
        value.add(key);

        result.put(key, value);
        return result;
    }

}

  前台返回数据是这样的:

{"com.example.demo.Person@23a922d4":[{"name":"key","age":12},{"name":"key","age":12},{"name":"key","age":12}]}

  什么?返回的竟是全类名!!!百思不得姐

  于是重写了toString()方法,就解析得了了:

@Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

  

{"Person{name='key', age=12}":[{"name":"key","age":12},{"name":"key","age":12},{"name":"key","age":12}]}

  

 

推荐阅读